Оператор do - цикъл с постусловие

Оператор do се ползва за формиране на цикъл с постусловие do while - първо се изпълнява вложеният оператор в тялото на този цикъл и едва след това се извършва проверка дали се продължава итеративния процес.

Описание: оператор do има следния синтаксис: do {<оператор>} while (<условие>); като обикновено <оператор> е съставен оператор.
Семантиката на този вид цикъл е следната: след ключовата дума do се изпълнява съставният оператор в тялото на цикъла, изчислява се изразът, зададен чрез <условие> (подобно на if), и докато неговата стойност е истина се изпълнява отново съставният оператор в този цикъл.
Това се повтаря, докато стойността на условието престане да бъде истина (стойност, равна на нула). Съставният оператор в този цикъл винаги се изпълнява поне веднъж, дори ако още при първото изчисление на <условие> се получи стойност 0 (лъжа).
В тялото на цикъл do while може да се съдържа един или повече цикъла for, while, do while.

цикъл do while - извеждане на цифрите 0..9

Преобладаващият брой примери за илюстриране действие на цикъл съдържа извеждане на позната последователност. Следващият пример извежда на екрана всички едноцифрени естествени числа - цифрите 0..9 чрез цикъл do while:
#include<iostream>
using namespace std;
 
int main()
{
   int a=0;//inicializaciq na promenliwata "a"
   cout<<"Da se systawi programa, chrez koqto s cikyl do-while \n";
   cout<<"se izwevdat na ekrana wsichki ednocifreni chisla.\n";
   cout<<"Primer: 9 Izhod 0123456789\n";
  do //nachalo do while 
   { cout<<a;
     a++;//sledenata w usowieto na cikyla promenliwa narastwa s 1
   } while (a<10); //indeksnata promenliwa "a" da ne dostiga 10

system("pause");//chaka natiskane na klawish ot klawiaturata
return 0;
}//kraj na programa do while 

Начало на страницата

цикъл do while за проверка по вход

Разглежданият цикъл с постусловие do while се изпълнява задължително поне веднъж. Тази негова собеност го прави предпочитано средство за контрол на въвежданите данни. Нека разгледаме следната задача за проверка на въвежданите данни:

Намерете число N, което при делене на M се получава частно P и остатък O. Числата O,M,P,O са естествени.
Така поставената задача се решава с един единствен ред: M=N*P+O, но само ако са въведени коректни данни.
В случая изискването е остатъкът да е по-малък от въведената стойност за делител. Реално в самото постусловие се извършва дали във въведените данни остатъкът е по голям от делителя. В тялото на цикъла има само оператори за извеждане на съобщение и въвеждане стойност на данни. Проверката за условие на валидност на въвежданите данни е и условие за продължаване на този цикъл.
  Следващата примерна програма илюстрира идеята за проверка по вход чрез цикъл do while:

#include<iostream>
using namespace std;
 
int main()
{int M,N,O,P;
 cout<<"Tyrsim chislo M, koeto razdeleno na N dawa chastno P i ostatyk O.\n";
 cout<<"Da se systawi programa, chrez koqto s cikyl do while \n";
 cout<<"se izwyrshwa prowerka za korektnost na wywevdanite danni.\n";
 cout<<"Primer: N=11, P=10, O=9 Izhod M=119\n";
 do {//nachalo do while 
  cout<<"delitel ";cin>>N;
  cout<<"chastno ";cin>>P;
  cout<<"ostyk ";cin>>O;
 } while (O>=M); // kraj do while ostayk > delitel
 M=N*P+O;
 cout<<"chislo M = "<<M<<endl;
system("pause");
return 0;
}//kraj na programa do while 

Начало на страницата

цикъл do while - съставно условие

В цикъл с постусловие може да се използва съставно условие за проверка - аналогията с оператор if за проверка на условие е пълна. Нека разгледаме следната задача за проверка на въвежданите данни чрез съставно условие: Търсим две последователни четни естествени числа, за които е въведена разликата от техните квадрати - също естествено число. Търсим тези числа.

  Алгоритъм
Разглеждаме уравнението (N+2)*(N+2) – N*N = R
N*N + 4*N + 4 - N*N = R
N = (R-4)/4
Трябва едновременно да се проверява за изпълнение на условие:
R да е кратно на 4, както и R>4

  Следващата примерна програма илюстрира идеята за проверка на съставно по вход чрез цикъл do while

#include<iostream>
using namespace std;
 
int main()
{int M,N,P,R;
 cout<<"Tyrsim dwe chetni estestweni chsila N  i M, chiqto razlika na\n";
 cout<<"tehnite kwadrati e P\n";
 cout<<"Da se systawi programa, chrez koqto s cikyl do while \n";
 cout<<"se izwyrshwa prowerka za korektnost na wywevdanite danni.\n";
 cout<<"Primer: P=44 Izhod M=10 N=12\n";
 //N*N +4*N + 4 - N*N = R  => N = (R-4)/4
 do {//nachalo do while 
  cout<<"razlika ";cin>>R;
 } while (R<4 || R%4); // kraj do while razlika
 M=(R-4)/4; N=M+2;
 cout<<"chisla "<<M<<" i "<<N<<endl;
system("pause");
return 0;
}//kraj na programa do while

Задачи с подобни функции и служебни думи са разгледани в страницата с електронни уроци по информатика - програмиране.
Илюстриране работата на характерни алгоритми можете да намерите в предоставените електронни помагала съдържащи решени примери.



Начало на страницата

 
Размер на шрифта
Increase Font Size Option 3 Reset Font Size Option 3 Decrease Font Size Option 3
Bulgarian Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish
Търсене в сайта: