На этом уроке мы познакомимся c организацией логических циклических структур на языке Турбо-Паскаль.
Для чего применяются циклы?
Как записывается арифметический цикл ?
Что такое переменная –счетчик цикла?
Какого типа она должна быть?
С каким шагом она изменяется?
При составлении программ часто возникают ситуации, когда
1. Заранее не известно количество повторений цикла;
2. Переменная – счетчик цикла должна изменяться с шагом ≠ 1.
В таких случаях используют
- Это циклическое повторение блока команд, пока выполняется (или не выполняется) некоторое условие
В цикле While проверка условия выполнения цикла находится в начале цикла, а в Repea t – в конце. Цикл Repeat всегда выполняется хотя бы один раз, а цикл While может не выполнятся ни разу.
В цикле While выход из цикла осуществляется, если условие ложно, а в Repeat – если условие истинно.
Между словами Repeat и Until можно размещать несколько операторов без Begin и End , а цикл While…do может содержать только один оператор тела цикла; поэтому нужно использовать Begin и End .
Найти все двузначные числа, кратные 7.
Program Kratn_7;
Uses Crt;
Var k: integer;
Begin
Clrscr;
k:=14;
While k
Begin
Writeln(k);
k:=k+7;
end;
readln;
end.
При использовании логических циклов необходимо всегда заботиться о том, чтобы переменная, использующаяся в условии завершения цикла, каким-то образом обязательно изменялась в теле цикла. Это может быть команда присваивания ( как в данной программе) или команда ввода.
Начало
k:=14
-
K=99
+
Вывести k
k:=k+7
Конец
При каком количестве слагаемых последовательности их сумма превысит 10?
Program Summa_2;
Uses Crt;
Var sum, x: real;
K: integer;
Begin
Clrscr;
sum:=0;
k:=1;
While sum
Begin
Sum:=sum+1/k;
k:=k+1;
end;
Writeln('Kolichestvo elementov=',k);
readln;
end.
Начало
sum:=0k:=1
-
sum 10
+
Sum:=sum+1/k
k:=k+1
Kolichestvo elementov
=k
Конец
Сегодня мы познакомились с логическими циклами While и Repeat .
Узнали об их отличиях и особенностях применения.
Рассмотрели примеры использования цикла WHILE .
Обратили особое внимание на необходимость изменения в цикле переменной, которая участвует в условии завершения цикла.
С клавиатуры вводится произвольная последовательность положительных чисел, за которой следует 0. Определить:
Максимальное число в этой последовательности. Количество четных чисел.
Максимальное число в этой последовательности.
Количество четных чисел.
§ 14, стр 113 № 1(а, б, в)
§ 15, стр 115 № 1
Когда нельзя использовать циклFOR?
Как записывается циклWHILE?
Как записывается циклREPEAT?
Назовите различия цикловWHILEиREPEAT.
Написать программу, которая «задумывает» число в диапазоне от 1 до 9 и предлагает пользователю угадать это число за 5 попыток.
Пояснения к программе:
Компьютер может «задумать» число с помощью функции Random .
Количество повторений цикла в этой задаче может быть от 1 до 5 – то есть, заранее не известно.
Так как пользователь должен сделать хотя бы одну попытку, то логично использовать команду цикла Repeat…until .
Program Ugaday_chislo;
const Npop=5;
var comp, igrok, n: integer;
Begin
Randomize;
comp:=random(9)+1;
Writeln ('Game "Угадай число" ');
Writeln ( ‘ Комптьютер загадывает число от 1 до 9 ’ );
Writeln (‘Вы должны угадать это число');
Writeln ( ‘ за 5 попыток');
repeat
n:=n+1;
Write (‘Введите число- ');
readln(igrok);
until (n=npop) or (comp=igrok);
if comp = igrok
then Writeln ('Win')
else Writeln (' No win Chislo - ',comp);
readln; end.
0 . Алгоритм : Для того, чтобы не «потерять» заданное число, введем переменную y , значение которой сначала будет = x. С- целая часть от деления числа y на 10 R- остаток от деления y на 10 K- кол-во цифр в числе x Последовательно будем находить целую часть и остаток от деления числа y на 10.Именно остаток от деления будет очередной цифрой x . На каждом шаге будем изменять число y : присваивать ему значение целой части от деления y на 10.Для нахождения количества цифр организуем счетчик, значение которого будет увеличено на 1.Процесс повторяется пока значение числа y не станет меньше 1." width="640"
Найти все цифры и их количество заданного произвольного целого числа x0 .
Алгоритм :
Для того, чтобы не «потерять» заданное число, введем переменную y , значение которой сначала будет = x.
С- целая часть от деления числа y на 10
R- остаток от деления y на 10
K- кол-во цифр в числе x
Последовательно будем находить целую часть и остаток от деления числа y на 10.Именно остаток от деления будет очередной цифрой x. На каждом шаге будем изменять число y : присваивать ему значение целой части от деления y на 10.Для нахождения количества цифр организуем счетчик, значение которого будет увеличено на 1.Процесс повторяется пока значение числа y не станет меньше 1.
Program Zifry;
Uses Crt;
var x, y, c: longint;
r, k: integer;
Begin
clrscr;
Writeln ('Enter zeloe chislo do 10 snakov');
Readln (x);
writeln;
y:=x;k:=0;
Writeln ('Zifry zadannogo chisla:');
repeat
r:=y mod 10;
c:=y div 10;
k:=k+1;
y:=c;
Writeln (k,' zifra = ',r);
until y
Writeln ('Chislo - ',x,' coderjit ', k, ' zifr');
readln;
end.
начало
Ввод целого числа
0
k:=0;y:=x
Цифры заданного
числаx:
r:=y mod 10
c:=y div 10
k:=k+1; y:=c
k-ая цифра =r
-
y
+
Число Х содержит
kцифр
Конец
Сегодня рассмотрели примеры использования цикла REPEAT.
Вывести на экран таблицу значений функции x2 на отрезке [0,1] с шагом 0.1. Каждое число вывести в 8 позициях на отдельной строке.(Использовать команду Repeat)
Выучить конспект, повторить § 14 и 15 .
Написать программу, которая проверяет знание учениками таблицы умножения. Сомножители определяются с помощью функции Random . Каждому ученику дается 5 попыток, за которые программа выставляет оценку. Программу написать 3-мя способами – с использованием циклов For , While и Repeat .