Цикл while. В цикле с условием while цикл выполняется, пока истинно задающее его условие. Поэтому этот цикл также иногда называют циклом "пока". Часто цикл while используется, когда невозможно заранее предсказать, сколько раз необходимо выполнить тело цикла. В повседневной жизни цикл while можно встретить в алгоритмах, вроде "Пока в пределах видимости есть машины, стоять на месте" или "Пока в ящике есть детали, достать деталь из ящика".
В следующей программе цикл while используется подобно циклу for для вывода на экран всех чисел от 1 до 10:
i=1 while i<=10: print i i=i+1 В этой программе переменной i присваивается значение 1. Затем начинается цикл (ключевое слово while) с проверяемым условием i<=10. Тело цикла содержит две инструкции: вывод на экран значения переменной i и увеличение значения переменной i на 1.
При выполнении этого цикла проверяется условие i<=10. Поскольку значение i изначально равно 1, то условие верно и выполняется тело цикла: на экран выводится значение переменной i, то есть 1 и переменной i присваивается значение i+1, то есть 2. Снова проверяется условие, поскольку оно верно, то выполняется блок цикла: на экран выводится число 2 и переменной i присваивается значение 3. Опять проверяется значение цикла, и так далее до тех пор, пока проверяемое условие истинно.
PascalABC.NET 3.3.5, сборка 1659 от 09.04.2018 Внимание! Если программа не работает, обновите версию!
begin // структура строки // день время канал вид название(возможно, многословное) // цель: удалив "канал" (третье слово), найти совпадающие строки var ms:=ReadAllLines('TV.txt'); ms.PrintLines; // чтобы было понятно содержимое файла Writeln; var d:=ms.GroupBy(s->(s.ToWords[:2]+s.ToWords[3:]).JoinIntoString(' ')) .Select(t->(t.Key,t.Count)).Where(t->t[1]>1).Select(t->t[0]); if d.Count=0 then Writeln('Искомые передачи отсутствуют') else foreach var s in d do begin var key:=s.ToWords.Take(2).JoinIntoString; ms.Where(t->t.ToWords.Take(2).JoinIntoString=key).Printlines; Writeln end end.
Пример Понедельник 09:00 Первый Новости Новости на Первом Суббота 19:40 Первый Фильм Кин-дза-дза! Среда Первый 07:15 НТВ Мультфильм Трое из Простоквашино Четверг 19:40 Первый Фильм Кин-дза-дза! Вторник 09:00 Первый Новости Новости на Первом Понедельник 12:00 Первый Новости Новости на Первом Пятница 16:40 Россия-1 Мультфильм Трое из Простоквашино Суббота 19:40 Россия-1 Фильм Кин-дза-дза! Среда 09:00 Первый Новости Новости на Первом Четверг 09:00 Первый Новости Новости на Первом Суббота 19:40 НТВ Фильм Кин-дза-дза!
Суббота 19:40 Первый Фильм Кин-дза-дза! Суббота 19:40 Россия-1 Фильм Кин-дза-дза! Суббота 19:40 НТВ Фильм Кин-дза-дза!
В цикле с условием while цикл выполняется, пока истинно задающее его условие. Поэтому этот цикл также иногда называют циклом "пока". Часто цикл while используется, когда невозможно заранее предсказать, сколько раз необходимо выполнить тело цикла. В повседневной жизни цикл while можно встретить в алгоритмах, вроде "Пока в пределах видимости есть машины, стоять на месте" или "Пока в ящике есть детали, достать деталь из ящика".
В следующей программе цикл while используется подобно циклу for для вывода на экран всех чисел от 1 до 10:
i=1
while i<=10:
print i
i=i+1
В этой программе переменной i присваивается значение 1. Затем начинается цикл (ключевое слово while) с проверяемым условием i<=10. Тело цикла содержит две инструкции: вывод на экран значения переменной i и увеличение значения переменной i на 1.
При выполнении этого цикла проверяется условие i<=10. Поскольку значение i изначально равно 1, то условие верно и выполняется тело цикла: на экран выводится значение переменной i, то есть 1 и переменной i присваивается значение i+1, то есть 2. Снова проверяется условие, поскольку оно верно, то выполняется блок цикла: на экран выводится число 2 и переменной i присваивается значение 3. Опять проверяется значение цикла, и так далее до тех пор, пока проверяемое условие истинно.
Внимание! Если программа не работает, обновите версию!
begin
// структура строки
// день время канал вид название(возможно, многословное)
// цель: удалив "канал" (третье слово), найти совпадающие строки
var ms:=ReadAllLines('TV.txt');
ms.PrintLines; // чтобы было понятно содержимое файла
Writeln;
var d:=ms.GroupBy(s->(s.ToWords[:2]+s.ToWords[3:]).JoinIntoString(' '))
.Select(t->(t.Key,t.Count)).Where(t->t[1]>1).Select(t->t[0]);
if d.Count=0 then Writeln('Искомые передачи отсутствуют')
else
foreach var s in d do begin
var key:=s.ToWords.Take(2).JoinIntoString;
ms.Where(t->t.ToWords.Take(2).JoinIntoString=key).Printlines;
Writeln
end
end.
Пример
Понедельник 09:00 Первый Новости Новости на Первом
Суббота 19:40 Первый Фильм Кин-дза-дза!
Среда Первый 07:15 НТВ Мультфильм Трое из Простоквашино
Четверг 19:40 Первый Фильм Кин-дза-дза!
Вторник 09:00 Первый Новости Новости на Первом
Понедельник 12:00 Первый Новости Новости на Первом
Пятница 16:40 Россия-1 Мультфильм Трое из Простоквашино
Суббота 19:40 Россия-1 Фильм Кин-дза-дза!
Среда 09:00 Первый Новости Новости на Первом
Четверг 09:00 Первый Новости Новости на Первом
Суббота 19:40 НТВ Фильм Кин-дза-дза!
Суббота 19:40 Первый Фильм Кин-дза-дза!
Суббота 19:40 Россия-1 Фильм Кин-дза-дза!
Суббота 19:40 НТВ Фильм Кин-дза-дза!