лекция 04
Вложени ако-декларация - декларация, която се използва като част от всеки друг инструкция или друг if--декларация.
C ++ език позволява 256 нива на гнездене, но на практика рядко се налага да инвестират, ако-текст за "такава дълбочина." демонстрират използването на вложени използва друга подобрение програма "Magic Number" (където играчът получава отговор на програмата за грешен отговор).
// програма "Magic Number":
използване на пространството от имена STD;
вътр магия; // магически номер
вътр предположение; // опция потребител
магически = ранд (); // Получаване на случайно число.
Cout <<"Введите свой вариант магического числа: ";
Cout <<" ** Правильно **\n";
Cout < Cout <<". Очень жаль, но вы ошиблись."; ако (предположение> магия) Cout <<"Ваш вариант превышает магическое число.\n"; останало Cout <<" Ваш вариант меньше магического числа.\n"; А много често програмиране структура, която се основава на вложено ако-декларация е "стълба", ако-друго-ако. Тя може да бъде представена по следния начин. Тук, при условие елемент се отнася до условно експресията. Условни изрази се оценяват от горе до долу. В момента, в който и да е клон на истинския резултат е намерен, ще следвате инструкциите, свързани с този бранш, както и останалата част от "стълбата" се пропуска. Ако установите, че нито едно от условията не е вярно, последното останало-декларация ще бъде изпълнена (може да се предположи, че тя действа като условие, което е по подразбиране). Ако последното останало-декларацията не е посочено, а всички останали са неверни, а след това като цяло не се предприемат действия, ще бъде изпълнено. В продължение на линия - най-гъвкав серия на C ++. В тази глава ще разгледаме цикъла по-подробно, и вие ще знаете как мощно и гъвкаво средство за програмиране е то. Нека да започнем с традиционните форми на употреба. По този начин, общата сума за формат на записа линия за многократно изпълнение на една инструкция е както следва. за (инициализиране на изразяване; нарастване) отчет; Ако в продължение на контур е предназначен за многократно изпълнение на една инструкция не е, и програма единица, общото му формат е както следва. за (инициализация изразяване; увеличение) Елементът е обикновено изявление инициализация задача, която определя променлива управляваща верига равна на началната стойност. Тази променлива действа като брояч, който контролира работния цикъл. Елемент експресия е условен израз, където изпитваното стойността на манипулираната променлива цикъл. Резултатът от този тест определя за цикъл се изпълнява отново или не. Елемент нарастване - израз, който определя как стойността на манипулираната променлива цикъл след всяка итерация. Моля, имайте предвид, че всички тези елементи на линия за да бъдат разделени с точка и запетая. В продължение на линия ще бъде изпълнена, докато изчисляване на изразяване елемент дава истинския резултат. След този условен израз става истина цикълът е завършен, и програмата продължава с твърдението, следвайки линия за. В следната програма за линия се използва за показване на корен квадратен от стойностите, извлечени от числата от 1 до 99. Забележете, че в този пример, променливата цикъл контрол нарича бр. използване на пространството от имена STD; за (бр = 1; NUM<100; num++)
sq_root = SQRT ((двойно) бр); Програмата използва друга стандартна функция на C ++: SQRT (). Тази функция връща корен квадратен от своя аргумент. Аргументът, трябва да бъде от тип двойно. и затова функцията обаждане SQRT () се предоставя на параметър бр двойно тип. Функцията също връща стойност от тип двойно. Обърнете внимание на това, което е включено в заглавието на програмата Важно! В допълнение към функцията SQRT (), C ++ поддържа широк набор от други математически функции като грях (), защото (), тен (), дневник (), достигам пределна точка () и етаж (). Не забравяйте, че всички математически функции изискват включването в заглавието на програмата Контролът за променлив цикъл може да варира като положително или отрицателно нарастване, и това частичното стойност може също да бъде всеки. Например, следната програма показва номера в обхвата от -100 до 100 до декрементиране равни на 5. използване на пространството от имена STD; за (I = 100; I> = - 100; I = I-5) Cout <
Важно е да се осъзнае, че условния израз винаги е тестван в началото на за цикъл. Това означава, че ако първата проверка на условията, ще FALSE, кодът за контур на тялото не се изпълнява нито веднъж. Ето един пример: за (брой = 10; брой<5; count++) Cout < Този цикъл никога няма да бъде изпълнена, защото вече при входа към стойността си до нейния контрол променлив брой е по-голям от пет. Това прави условен израз (брои <5 ) ложным с самого начала. Поэтому даже одна итерация этого цикла не будет выполнена. Вариации на за линия В продължение на контур - един от най-гъвкав инструкция в C ++, защото позволява широк диапазон от възможности за неговото използване. Например, няколко променливи могат да бъдат използвани за контрол на цикъла за. Да разгледаме следния кодов фрагмент. за (х = 0, у = 10 х<=10; ++х, --у) Cout <<х <<' ' <<у <<'\n'; Тук запетаи разделят инструкцията две инициализиране и за двете допълнителни израз. Това е да се гарантира, че компилаторът "разбира", че има два инициализация инструкция за употреба и два нарастване (намаляване). В C ++, запетаята е оператор, който по същество означава "направи това и това." Други приложения на "запетаята" на оператора, които ще разгледаме по-късно в тази книга, но по-често се използват в течение за. На входа на двете променливи се инициализират в контура - х и у. След всяка итерация, променливата х е увеличен цикъл, докато променливата е декрементирани. Използването на няколко контролни променливи в цикъла понякога може да опрости алгоритмите. Секции инициализация и нарастване на линия може да използвате произволен брой инструкции, но обикновено не надвишава броя две. Условен израз, който контролира цикъл за, може да бъде всеки валиден C ++ - експресия. В този случай не е необходимо да включва регулиране на цикъла. В следващия цикъл ще се изпълни, докато потребителят натисне клавиш от клавиатурата. Тази програма показва друго (много важно) библиотека функция: kbhit (). Тя връща FALSE, ако не е бил натиснат клавиш от клавиатурата, а TRUE друго. Функцията не очаква клавиши, което позволява на цикъла, за да се извърши, докато това не се случи. kbhit () функция не се определя от стандартна C ++, но е включен в разширяването на C ++ език, който се поддържа от повечето компилатори. вие трябва да включите заглавката за използване в програма използване на пространството от имена STD; // Посочете номера на екрана, докато не натиснете произволен клавиш. Cout <
На всяка итерация на цикъла се нарича kbhit функция (). Ако стартирате програмата, натиснете произволен клавиш, тази функция връща TRUE, причинявайки израз! Kbhit () дава FALSE, а цикълът ще спре. Но, ако не натиснете бутона, функцията връща FALSE, а изразът! Kbhit () дава TRUE, което ще продължи цикъла на "готино". Липсата на елементите в дефиницията на цикъла В C ++, е разрешено да се пропусне всяка глава цикъл елемент (инициализация. Условно експресия. Увеличаване), или дори всички наведнъж. Например, ние искаме да се напише една линия, която трябва да се извърши, докато броят 123. Това е една такава програма няма да бъде въведен от клавиатурата. използване на пространството от имена STD; Cout <<"Введите число: "; Тук в заглавката на за линия не е израз на нарастване. Това означава, че при всяко повторение на цикъла прави само едно нещо: стойността на х е в сравнение с броя 123. Но ако въведете номера с помощта на клавиатурата 123. условния израз се проверява в цикъл става невярна и цикъла се прекратява. Тъй като експресията на нарастване в заглавката на линия липсва, променлив цикъл контрол не се променя. Endless цикъл - цикъл, който никога не свършва. Оставянето на празен условен израз за линия, можете да създадете един безкраен цикъл (цикъл, който никога не свършва). Метод за създаване на такъв цикъл е показано в следната структура пример за цикъл. Този цикъл ще продължи безкрайно. Цикли времезакъснение Програмите често се използват така наречените времезакъснение цикли. Тяхната задача - да просто "убиване на времето." За да създадете тези цикли е достатъчно, за да оставите празен тялото цикъл, т.е. пропуснете тези инструкции, които цикълът се повтаря на всяка итерация. Ето един пример: за (х = 0 х<1000; х++); Този цикъл инКрементира само стойността на променливите х, и не прави нищо повече. Необходимо е Точката и запетаята (край на ред) се дължи на факта, че цикълът за очаква да получи инструкция, която може да бъде празен (както е в този случай). Преди да продължа, това не би навредило да експериментирате със своите собствени вариации на за цикъл. Това ще помогне да се осигури нейната гъвкавост и сила. Отчетът за превключвател - декларация многопосочни разклоняване, която ви позволява да изберете от набор от алтернативи. Преди да се пристъпи към изучаването на други цикличен C ++ - дизайн и да се запознаете с друга инструкция избор - ключ. Отчетът за превключвате осигурява групов разклоняване. Тя ви позволява да изберете един от многото алтернативи. Въпреки многопосочна тест може да се прилага чрез последователност от вложени ако -Instructions, в много ситуации, отчета за превключване е по-ефективно решение. Тя работи по следния начин. Стойността на експресията в сравнение се последователно с константите от определен списък. Когато се открие съвпадение на едно от условията за сравнение изпълнява инструкция последователност, свързани с това състояние. Общо формат на запис изявление ключ е както следва. Елемент на изразяването на отчета за превключване при изчисляването трябва да се дава цяло число или символ стойност. (Казвайки като, например, плаващ не е позволено, а текстът е.) Често, контролният ключ се използва -vyrazheniya една променлива. Отчетът за почивка завършва изпълнението на кода, определен ключ инструкция. подразбиране Q клон инструкция последователност се извършва в случай, че нито една от константите дадени случай няма да съвпадне с резултат от изчисление -vyrazheniya ключ. По подразбиране клон не е задължително. Ако това не стане, тогава резултатите не съответстват на израза с някой от константите на делото, не се вземат мерки. Ако все още се намира този мач да се изпълни инструкциите на съответната съдебна власт, дотогава, докато не се сблъсква с изявление, почивка или да преминете -instructions крайните е достигната (или в по подразбиране - или в последния случай на Q клон). Инструкции по подразбиране-vetvivypolnyayutsya в случай нито една от константите на случая, не съвпадат с резултатите от оценката на ключ-изразяване. Така че, за прилагането ключ -instructions трябва да знаете. ■ Ръчно превключване се различава от твърдението, че ако -vyrazhenie превключвател може да се тества само с помощта на равно (т.е. за един мач с определените ключ -vyrazheniya случай константи), а условно ако -vyrazhenie може да бъде от всякакъв тип. ■ Няма два случая константи в същите ключ -instructions не могат да имат еднакви стойности. ■ В отчета за превключвател обикновено е по-ефективно от вложени ако-декларация. ■ последователност от инструкции, свързани с всеки случай Q клон, а не да го блокира. Въпреки това, пълното ключа открива -user единица. Значението на този факт ще стане ясно, след като ще научите повече за C ++. Според C ++ стандартен ключ-строителство може да има не повече от 16 384 случаи -Instructions. Но на практика (от съображения за ефективност) могат да се ограничава само до много по-малък брой от тях. Използването превключвател -instructions Следната програма демонстрира. Той създава една проста система "помощ", който описва целта, за -, ако - и да превключвате -Instructions. След извеждане на списък с предложени теми, които могат да предоставят помощ, програмата се връща в режим на готовност, докато потребителят не прави избор. потребителска стойност се използва при преминаването на инструкция за показване на информация по темата. (Може като упражнение за допълване на наличната информация по темата, както и да влиза в тази "помощ" на новата тема система.) // Демонстрира мощностни инструкции за проста система "Помощ". използване на пространството от имена STD; Cout <<"Справка по темам:\n\n"; Cout <<"1. for\n";