Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π―Π·Ρ‹ΠΊ программирования C++. ΠŸΡΡ‚ΠΎΠ΅ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 6

Автор Π‘Ρ‚Π΅Π½Π»ΠΈ Π›ΠΈΠΏΠΏΠΌΠ°Π½

Π’ этой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ использован ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ while:

// ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ†ΠΈΠΊΠ»Π°, ΠΏΠΎΠΊΠ° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ val

// Π½Π΅ прСвысит 10

while (val <= 10) {

 sum += val; // ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ sum ΡΡƒΠΌΠΌΡƒ val ΠΈ sum

 ++val;      // Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ 1 ΠΊ val

}

Для сравнСния Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ val ΠΈ числа 10 условиС Ρ†ΠΈΠΊΠ»Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ мСньшС ΠΈΠ»ΠΈ Ρ€Π°Π²Π½ΠΎ (ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ <=). Пока Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ val мСньшС ΠΈΠ»ΠΈ Ρ€Π°Π²Π½ΠΎ 10, условиС истинно ΠΈ Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π° while выполняСтся. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС Ρ‚Π΅Π»ΠΎΠΌ Ρ†ΠΈΠΊΠ»Π° while являСтся Π±Π»ΠΎΠΊ, содСрТащий Π΄Π²Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°.

{

 sum += val; // ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ sum ΡΡƒΠΌΠΌΡƒ val ΠΈ sum

 ++val;      // Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ 1 ΠΊ val

}

Π‘Π»ΠΎΠΊ (block) β€” это ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ· любого количСства ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ², Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Ρ… Π² Ρ„ΠΈΠ³ΡƒΡ€Π½Ρ‹Π΅ скобки. Π‘Π»ΠΎΠΊ являСтся ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π²Π΅Π·Π΄Π΅, Π³Π΄Π΅ допустим ΠΎΠ΄ΠΈΠ½ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€. ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ Π² Π±Π»ΠΎΠΊΠ΅ являСтся составной ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ присвоСния (compound assignment operator), ΠΈΠ»ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ присвоСния с суммой (ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ +=). Π­Ρ‚ΠΎΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ добавляСт свой ΠΏΡ€Π°Π²Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ ΠΊ Π»Π΅Π²ΠΎΠΌΡƒ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Ρƒ. Π­Ρ‚ΠΎ эквивалСнтно Π΄Π²ΡƒΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌ: суммы ΠΈ присвоСния.

sum = sum + val; // ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ sum ΡΡƒΠΌΠΌΡƒ val ΠΈ sum

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π² Π±Π»ΠΎΠΊΠ΅ добавляСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ val ΠΊ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ sum ΠΈ сохраняСт Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π² Ρ‚ΠΎΠΉ ΠΆΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ sum.

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ прСфиксный ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π° (prefix increment operator) (ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ++), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ осущСствляСт ΠΏΡ€ΠΈΡ€Π°Ρ‰Π΅Π½ΠΈΠ΅:

++val; // Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ 1 ΠΊ val

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π° добавляСт Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ ΠΊ своСму ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Ρƒ. Π—Π°ΠΏΠΈΡΡŒ ++val эквивалСнтна Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΡŽ val = val + 1.

ПослС выполнСния Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ» while снова провСряСт условиС. Если послС Π½ΠΎΠ²ΠΎΠ³ΠΎ увСличСния Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ val всС Π΅Ρ‰Π΅ мСньшС ΠΈΠ»ΠΈ Ρ€Π°Π²Π½ΠΎ 10, Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π° while выполняСтся снова. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° условия ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π° продолТится Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ val остаСтся мСньшС ΠΈΠ»ΠΈ Ρ€Π°Π²Π½ΠΎ 10.

Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ val станСт большС 10, происходит Π²Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· Ρ†ΠΈΠΊΠ»Π° while ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρƒ, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ Π·Π° Π½ΠΈΠΌ. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС это ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π½Π° экранС, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ слСдуСт ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ return, Π·Π°Π²Π΅Ρ€ΡˆΠ°ΡŽΡ‰ΠΈΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ main() ΠΈ саму ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ.

УпраТнСния Ρ€Π°Π·Π΄Π΅Π»Π° 1.4.1

Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 1.9. ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ†ΠΈΠΊΠ» while для суммирования чисСл ΠΎΡ‚ 50 Π΄ΠΎ 100.

Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 1.10. ΠšΡ€ΠΎΠΌΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° ++, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ добавляСт 1 ΠΊ своСму ΠΎΠΏΠ΅Ρ€Π°Π½Π΄Ρƒ, сущСствуСт ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π΄Π΅ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π° (--), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ 1. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π΄Π΅ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ†ΠΈΠΊΠ» while, выводящий Π½Π° экран числа ΠΎΡ‚ дСсяти Π΄ΠΎ нуля.

Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 1.11. ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅Ρ‚ Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π΄Π²Π° Ρ†Π΅Π»Ρ‹Ρ… числа, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ число Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ этими двумя числами.

1.4.2. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ for

Π’ рассмотрСнном Ρ€Π°Π½Π΅Π΅ Ρ†ΠΈΠΊΠ»Π΅ while для управлСния количСством ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ использовалась пСрСмСнная val. ΠœΡ‹ провСряли Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² условии, Π° Π·Π°Ρ‚Π΅ΠΌ Π² Ρ‚Π΅Π»Π΅ Ρ†ΠΈΠΊΠ»Π° while ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Π»ΠΈ Π΅Π³ΠΎ.

Вакая схСма, ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°ΡŽΡ‰Π°Ρ использованиС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² условии ΠΈ Π΅Π΅ ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚ Π² Ρ‚Π΅Π»Π΅ ΡΡ‚ΠΎΠ»ΡŒ популярна, Ρ‡Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠ΅ срСдство управлСния β€” ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ for, сущСствСнно ΡΠΎΠΊΡ€Π°Ρ‰Π°ΡŽΡ‰ΠΈΠΉ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ ΠΊΠΎΠ΄. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ for, ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΡΡƒΠΌΠΌΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΉ числа ΠΎΡ‚ 1 Π΄ΠΎ 10, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

#include <iostream>

int main() {

 int sum = 0;

 // ΡΠ»ΠΎΠΆΠΈΡ‚ΡŒ числа ΠΎΡ‚ 1 Π΄ΠΎ 10 Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ

 for (int val = 1; val <= 10; ++val)

  sum += val; // эквивалСнтно sum = sum + val

 std::cout << "Sum of 1 to 10 inclusive is "

           << sum << std::endl;

 return 0;

}

Как ΠΈ ΠΏΡ€Π΅ΠΆΠ΄Π΅, опрСдСляСм ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ sum Π½ΡƒΠ»Π΅Π²Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ. Π’ этой вСрсии ΠΌΡ‹ опрСдСляСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ val ΠΊΠ°ΠΊ Ρ‡Π°ΡΡ‚ΡŒ самого ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° for.

for (int val = 1; val <= 10; ++val)

 sum += val;

Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° for Π΅ΡΡ‚ΡŒ Π΄Π²Π΅ части: Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΈ Ρ‚Π΅Π»ΠΎ. Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ количСство Ρ€Π°Π· выполнСния Ρ‚Π΅Π»Π°. Π‘Π°ΠΌ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ состоит ΠΈΠ· Ρ‚Ρ€Π΅Ρ… частСй: ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, условия ΠΈ выраТСния. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ опрСдСляСт, Ρ‡Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ val Ρ‚ΠΈΠΏΠ° int присвоСно исходноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 1:

int val = 1;

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ val сущСствуСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ†ΠΈΠΊΠ»Π΅ for; Π΅Π΅ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ послС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Ρ†ΠΈΠΊΠ»Π°. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ выполняСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Π°ΠΆΠ΄Ρ‹ ΠΏΠ΅Ρ€Π΅Π΄ запуском Ρ†ΠΈΠΊΠ»Π° for.

УсловиС сравниваСт Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ val со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ 10:

val <= 10

УсловиС провСряСтся ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Ρ†ΠΈΠΊΠ»Π΅. Пока Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ val мСньшС ΠΈΠ»ΠΈ Ρ€Π°Π²Π½ΠΎ 10, выполняСтся Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π° for.

Π’Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ выполняСтся послС Ρ‚Π΅Π»Π° Ρ†ΠΈΠΊΠ»Π° for. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ прСфиксный ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ добавляСт 1 ΠΊ Π·Π½Π°Ρ‡Π΅Π½ΠΈΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ val:

++val

ПослС выполнСния выраТСния ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ for ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ провСряСт условиС. Если Π½ΠΎΠ²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ val всС Π΅Ρ‰Π΅ мСньшС ΠΈΠ»ΠΈ Ρ€Π°Π²Π½ΠΎ 10, Ρ‚ΠΎ Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π° for выполняСтся снова. ПослС выполнСния Ρ‚Π΅Π»Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ val увСличиваСтся снова. Π¦ΠΈΠΊΠ» продолТаСтся Π΄ΠΎ Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΡ условия.

Π’ рассматриваСмом Ρ†ΠΈΠΊΠ»Π΅ for Ρ‚Π΅Π»ΠΎ осущСствляСт суммированиС.

sum += val; // эквивалСнтно sum = sum + val

Π’ ΠΈΡ‚ΠΎΠ³Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ for выполняСтся Ρ‚Π°ΠΊ.

1. БоздаСтся пСрСмСнная val ΠΈ инициализируСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ 1.

2. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅Ρ‚ΡΡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ val (мСньшС ΠΈΠ»ΠΈ Ρ€Π°Π²Π½ΠΎ 10). Если условиС истинно, выполняСтся Ρ‚Π΅Π»ΠΎ Ρ†ΠΈΠΊΠ»Π° for, Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС Ρ†ΠΈΠΊΠ» Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΊ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρƒ, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ Π·Π° Π½ΠΈΠΌ.

3. ΠŸΡ€ΠΈΡ€Π°Ρ‰Π΅Π½ΠΈΠ΅ значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ val.

4. Пока условиС истинно, ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‚ΡΡ дСйствия, начиная с ΠΏΡƒΠ½ΠΊΡ‚Π° 2.

УпраТнСния Ρ€Π°Π·Π΄Π΅Π»Π° 1.4.2

Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 1.12. Π§Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ†ΠΈΠΊΠ» for? Каково Ρ„ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ sum?

int sum = 0;

for (int i = -100; i <= 100; ++i)

 sum += i;

Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 1.13. ΠŸΠ΅Ρ€Π΅ΠΏΠΈΡˆΠΈΡ‚Π΅ упраТнСния Ρ€Π°Π·Π΄Π΅Π»Π° 1.4.1, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ†ΠΈΠΊΠ»Ρ‹ for.

Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 1.14. Π‘Ρ€Π°Π²Π½ΠΈΡ‚Π΅ Ρ†ΠΈΠΊΠ»Ρ‹ с использованиСм ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² for ΠΈ while Π² Π΄Π²ΡƒΡ… ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… упраТнСниях. ΠšΠ°ΠΊΠΎΠ²Ρ‹ прСимущСства ΠΈ нСдостатки ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ… Π² Ρ€Π°Π·Π½Ρ‹Ρ… случаях?

Π£ΠΏΡ€Π°ΠΆΠ½Π΅Π½ΠΈΠ΅ 1.15. ΠΠ°ΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ содСрТат Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространСнныС ошибки, обсуТдаСмыС Π²ΠΎ Π²Ρ€Π΅Π·ΠΊΠ΅ Β«Π’Π²ΠΎΠ΄ ΠΊΠΎΠ½Ρ†Π° Ρ„Π°ΠΉΠ»Π° с ΠΊΠ»Π°Π²ΠΈΠ°Ρ‚ΡƒΡ€Ρ‹Β». ΠžΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с сообщСниями, Π²Ρ‹Π΄Π°Π²Π°Π΅ΠΌΡ‹ΠΌΠΈ компилятором.

1.4.3. Π’Π²ΠΎΠ΄ нСизвСстного количСства Π΄Π°Π½Π½Ρ‹Ρ…

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Π²Ρ‹ΡˆΠ΅ Ρ€Π°Π·Π΄Π΅Π»Π°Ρ… ΠΌΡ‹ писали ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ суммировали числа ΠΎΡ‚ 1 Π΄ΠΎ 10. ЛогичСскоС ΡƒΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²ΠΎΠ²Π°Π½ΠΈΠ΅ этой ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π»ΠΎ Π±Ρ‹ запрос суммируСмых чисСл Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС ΠΌΡ‹ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ Π·Π½Π°Ρ‚ΡŒ, сколько чисСл ΡΡƒΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ числа, ΠΏΠΎΠΊΠ° Π±ΡƒΠ΄Π΅Ρ‚ Ρ‡Ρ‚ΠΎ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ.

#include <iostream>

int main() {

 int sum = 0, value = 0;

 // Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° Ρ„Π°ΠΉΠ»Π°, Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ сумму всСх Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ

 while (std::cin >> value)

  sum += value; // эквивалСнтно sum = sum + val

 std::cout << "Sum is: " << sum << std::endl;

 return 0;

}

Если ввСсти значСния 3 4 5 6, Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Sum is: 18.

ΠŸΠ΅Ρ€Π²Π°Ρ строка Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ main() опрСдСляСт Π΄Π²Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΠ° int ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ sum ΠΈ value, ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ 0. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ value примСняСтся для хранСния чисСл, Π²Π²ΠΎΠ΄ΠΈΠΌΡ‹Ρ… Π² условии Ρ†ΠΈΠΊΠ»Π° while.

while (std::cin >> value)

УсловиСм продолТСния Ρ†ΠΈΠΊΠ»Π° while являСтся Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅

std::cin >> value

Π­Ρ‚ΠΎ Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ число со стандартного устройства Π²Π²ΠΎΠ΄Π° ΠΈ сохраняСт Π΅Π³ΠΎ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ value. Как ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡŒ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ 1.2, ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π²Π²ΠΎΠ΄Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ свой Π»Π΅Π²Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π² условии фактичСски провСряСтся ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ std::cin.

Когда ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ° istream ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ΅ условия, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ зависит ΠΎΡ‚ состояния ΠΏΠΎΡ‚ΠΎΠΊΠ°. Если ΠΏΠΎΡ‚ΠΎΠΊ допустим, Ρ‚.Π΅. Π½Π΅ столкнулся с ошибкой ΠΈ Π²Π²ΠΎΠ΄ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ значСния Π΅Ρ‰Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½, это условиС считаСтся истинным. ΠžΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ° istream ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ Π² нСдопустимоС состояниС ΠΏΠΎ достиТСнии ΠΊΠΎΠ½Ρ†Π° Ρ„Π°ΠΉΠ»Π° (end-of-file) ΠΈΠ»ΠΈ ΠΏΡ€ΠΈ Π²Π²ΠΎΠ΄Π΅ нСдопустимых Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ строки вмСсто числа. НСдопустимоС состояниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Ρ‚ΠΈΠΏΠ° istream Π² условии ΡΠ²ΠΈΠ΄Π΅Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΡƒΠ΅Ρ‚ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΎ Π»ΠΎΠΆΠ½ΠΎ.