Lecții · BAC · Informatica
Циклические структуры: for, while и repeat
Tema din testele ANCE: Циклические структуры
Тема II требует проследить, что выведет цикл, заменить for на while и написать программу с повторением. Здесь три оператора на двух языках, техника таблицы трассировки и баллы, которые дает барем.
Lecția este în rusă.
- Ce trebuie să știi
- Cum apare la examen
- Exemplu rezolvat
- Greșeli tipice
- Verifică-te
Ce trebuie să știi
Три циклических оператора
| Что делает | Паскаль | C++ |
|---|---|---|
| повторение со счетчиком | for i := 1 to n do | for (i = 1; i <= n; i++) |
| повторение пока | while cond do | while (cond) |
| повторение до | repeat ... until cond; | do { ... } while (cond); |
У оператора for счетчик, начальное и конечное значения записаны в заголовке, а число повторений известно заранее: от до тело выполняется раз. while проверяет условие перед каждым повторением, поэтому может не выполниться ни разу. repeat проверяет в конце, поэтому его тело выполняется хотя бы один раз; учти, что until останавливает цикл, когда условие становится истинным, а while продолжает, пока оно истинно.
Тело цикла
Если повторяешь больше одной инструкции, нужен begin ... end; в Паскале и фигурные скобки в C++. Без них повторяется только первая инструкция, а остальные выполняются один раз, после цикла.
Замена for на while
Именно это требуют тесты, и барем оценивает замену по элементам:
- 1)присваивание начального значения счетчику, до цикла
- 2)условие в
while, с той же границей, что была вfor - 3)составной оператор со всеми инструкциями тела
- 4)увеличение счетчика внутри тела
Без увеличения цикл не остановится, а без начального присваивания счетчик стартует с неопределенного значения.
for i := 1 to 5 do
begin
read(x);
s := s + x;
end;i := 1;
while i <= 5 do
begin
read(x);
s := s + x;
i := i + 1;
end;Таблица трассировки
Когда спрашивают, что выведет программа, составь таблицу: по столбцу на каждую переменную и по строке на каждое повторение. Записывай и то, что выводится, по порядку. Это единственный способ не потерять итерацию.
Приемы, которые повторяются в тестах
- сумма и подсчет:
s := s + x,k := k + 1 - цифры числа:
n mod 10дает последнюю цифру,n div 10отбрасывает ее, цикл идетwhile n > 0; при цикл не выполняется ни разу, поэтому этот случай разбирают отдельно - последовательные степени:
p := 1, затемp := p * a, покаp <= Q - продвижение с откатом (улитка в колодце): днем
dist := dist + x, ночью, если не вышла,dist := dist - y - вывод по столбцам:
write(i:5)выравнивает по пяти позициям,writelnпереводит строку
Что именно выводитсяwrite оставляет курсор на той же строке, writeln переводит его на следующую. Если программа пишет write('s=', s), то в ответ входит и префикс s=, а не только значение: формат — часть ответа.
Restul lecției e în abonament
Itemii reali ANCE în care apare tema, exemplul rezolvat pas cu pas, greșelile tipice și cele 7 întrebări de verificare se deschid cu abonamentul. „Ce trebuie să știi” rămâne gratuit.
Se deschide cu abonamentul
- Cum apare la examen
- Exemplu rezolvat
- Greșeli tipice
- Verifică-te
