SlideShare a Scribd company logo
1 of 14
ПРОГРАММИРОВАНИЕ ЦИКЛИЧЕСКИХ АЛГОРИТМОВ
НАЧАЛА ПРОГРАММИРОВАНИЯ
Ключевые слова
•while ( цикл-ПОКА)
•repeat (цикл-ДО)
•for (цикл с параметрами)
Программирование циклов с заданным
условием продолжения работы
Общий вид оператора:
whilewhile <условие> dodo <оператор>
Здесь:
<условие> - логическое выражение;
пока оно истинно, выполняется тело цикла;
<оператор> - простой или составной оператор,
с помощью которого записано тело цикла.
Тело цикла
Условие
да
нет
да
нет
Начало
Список данных
x, y, r, q - цел
x, y
r:=x
q:=0
r >=у
r:= r - y
q:= q +1
Конец
q, r
program n_14;
var x, y, q, r: integer;
begin
writeln ('Частное и остаток');
write ('Введите делимое x>>');
readln (x);
write ('Введите делитель y>>');
read (y);
r:=x;
q:=0;
while r>=y do
begin
r:=r-y;
q:=q+1
end;
writeln ('Частное q=', q);
writeln ('Остаток r=', r)
end.
Программирование циклов с заданным
условием окончания работы
Общий вид оператора:
repeatrepeat <оператор1; оператор2; …; > untiluntil <условие>
Здесь:
<оператор1>; <оператор2>; … - операторы, образующие
тело цикла;
<условие> - логическое выражение; если оно ложно, то
выполняется тело цикла.
Тело цикла
Условие
да
нет
program n_15;
var i: integer; x: real;
begin
writeln ('График тренировок');
i:=1;
x:=10;
repeat
i:=i+1;
x:=x+0.1*x;
until x>=25;
writeln ('Начиная с ', i, '-го дня
спортсмен будет пробегать 25 км')
end.
Конец
да
нет
Начало
Список данных
i – цел
x- вещ
i := 1
x := 10
x>= 25
i := i +1
x := x +0.1*x
i
Программирование циклов с заданным числом
повторений
Общий вид оператора:
forfor <параметр>:=<начальное_значение>
toto <конечное_значение> dodo <оператор>
Здесь:
<параметр> - переменная целого типа;
<начальное_значение> и <конечное_значение> -
выражения того же типа, что и параметр;
<оператор> - простой или составной оператор - тело цикла.
После каждого выполнения тела цикла происходит
увеличение на единицу параметра цикла; условие выхода из
цикла - превышение параметром конечного значения.
Тело цикла
i = i1, i2
program n_16;
var i,n:integer;a,y:real;
begin
writeln ('Возведение в степень');
write ('Введите основание a>>');
readln (a);
write ('Введите показатель n>>');
readln (n);
y:=1;
for i:=1 to n do y:=y*a;
writeln ('y=', y)
end.
Конец
Начало
Список данных
i, n – цел
a, y – вещ
y := 1
y := y * a y
a, n
i = 1, n
Различные варианты
программирования циклического
алгоритма
Для решения одной и той же задачи могут быть созданы
разные программы.
Организуем ввод целых чисел и подсчёт количества
введённых положительных и отрицательных чисел. Ввод
должен осуществляться до тех пор, пока не будет введён
ноль.
В задаче в явном виде задано условие окончания работы.
Воспользуемся оператором repeatrepeat.
program n_17;
var n, k1, k2: integer;
begin
k1:=0;
k2:=0;
repeat
write ('Введите целое число>>');
readln (n);
if n>0 then k1:=k1+1;
if n<0 then k2:=k2+1;
until n=0;
writeln ('Введено:');
writeln ('положительных чисел – ', k1);
writeln ('отрицательных чисел – ', k2)
end.
да
нет
n
n > 0
Начало
Список данных
n, k1, k2 - цел
n < 0
n = 0
k1, k2
Конец
k1:=0
k2:=0
k1:=k1+1
k2:=k2+1
да
да
нет
нет
Ввод осуществляется до тех пор, пока не будет введён ноль.
Работа продолжается, пока n 0.
Воспользуемся оператором whilewhile:
program n_18;
var n, k1, k2: integer;
begin
k1:=0;
k2:=0;
n:=1;
while n<>0 do
begin
writeln ('Введите целое число>>');
read (n);
if n>0 then k1:=k1+1;
if n<0 then k2:=k2+1;
end;
writeln ('Введено:');
writeln ('положительных – ', k1);
writeln ('отрицательных – ', k2)
end.
≠
да
n > 0
да
нет
Начало
Список данных
n, k1, k2 - цел
n <> 0
k1, k2
Конец
k1:=0
k2:=0
n:=1
k1:=k1+1
k2:=k2+1
нет
n
Самое главное
В языке Паскаль имеются три вида операторов
цикла:
while цикл-ПОКА)
repeat (цикл-ДО)
for (цикл с параметром).
Если число повторений тела цикла известно, то
лучше воспользоваться оператором for; в остальных
случаях используются операторы while и repeat.
Вопросы и задания
Дана последовательность операторов:
a:=1;
b:=2;
while a+b<8 do
begin
a:=a+1;
b:=b+2;
end;
s:=a+b
Сколько раз будет повторен цикл и какими будут
значения переменных a, b, s после исполнения этой
последовательности операторов?
Пример входных данных Пример выходных данных
Введите n> 5 5! = 120
Введите n> 6 6! = 720
Требовалось написать программу вычисления факториала числа n
(факториал числа n есть произведение всех целых чисел от 1до n).
Программист торопился и написал программу неправильно.
Ниже приведён фрагмент его программы, в котором содержится
пять ошибок:
k:=1;
f:=0;
while k<n do
f:=f*k;
k:=k+1
Найдите ошибки. Допишите необходимые операторы.
Проанализируйте следующий цикл:
while a<b do
c:=a=b;
В чём его особенность?
Дана последовательность операторов:
a:=1;
b:=1;
repeat
a:=a+1;
b:=b*2;
until b>8;
s:=a+b
Сколько раз будет повторён цикл и какими будут значения
переменных a, b, s после исполнения этой
последовательности операторов?
Напишите программу, в которой осуществляется ввод
целых чисел (ввод осуществляется до тех пор, пока не
будет введён ноль) и подсчёт суммы и среднего
арифметического введённых положительных чисел.
Используйте оператор repeat.
Напишите программу, в которой осуществляется ввод
целых чисел (ввод осуществляется до тех пор, пока не
будет введён ноль) и определение максимального
(наибольшего) из введённых чисел.
Используйте оператор repeat.repeat.
Напишите программу вычисления наибольшего общего
делителя двух целых чисел:
а) используйте оператор repeat;
б) используйте оператор while.
Сколько раз будет выполнен цикл?
а) for i:=0 to 15 do s:=s+1;
б) for i:=10 to 15 do s:=s+1;
в) for i:=-1 to 1 do s:=s+1;
г) for i:=10 to 10 do s:=s+1;
д) k:=5;
for i:=k-1 to k+1 do s:=s+1;
Напишите программу, которая 10 раз выводит на экран
ваши имя и фамилию.
Напишите программу, выводящую на экран изображение
шахматной доски, где чёрные клетки изображаются
звёздочками, а белые - пробелами. Рекомендуемый вид
экрана после выполнения программы представлен ниже:
* * * *
* * * *
* * * *
* * * *
* * * *
* * * *
* * * *
* * * *
Напишите программу, которая вычисляет сумму:
а) первых n натуральных чисел;
б) квадратов первых n натуральных чисел;
в) всех чётных чисел в диапазоне от 1 до n;
г) всех двузначных чисел.
Напишите программу, которая генерирует 10 случайных
чисел в диапазоне от 1 до 20, выводит эти числа на экран
и вычисляет их среднее арифметическое.
Напишите программу, которая выводит на экран таблицу
степеней двойки (от нулевой до десятой).
Рекомендуемый вид экрана после выполнения программы
представлен ниже:
Таблица степеней двойки:
0 1
1 2
2 4
3 8
4 16
5 32
6 64
7 128
8 256
9 512
10 1024
Пример входных данных Пример выходных
данных
Введите n> 5 5 * 2 = 10
5 * 3 = 15
5 * 4 = 20
5 * 5 = 25
5 * 6 = 30
5 * 7 = 35
5 * 8 = 40
5 * 9 = 45
5 * 10 = 50
Напишите программу, которая выводит на экран таблицу
умножения на n (n - целое число в диапазоне от 2 до 10,
вводимое с клавиатуры).
Какой из трёх рассмотренных операторов цикла
является, по вашему мнению, основным, т. е. таким, что
им можно заменить два других?
Обоснуйте свою точку зрения.
Опорный конспект
while (цикл-ПОКA)while (цикл-ПОКA)
repeat (цикл-ДО)repeat (цикл-ДО)
for (цикл с параметром)for (цикл с параметром) Число повторений
цикла известно
Число повторений
цикла известно
В языке Паскаль имеются три вида операторов цикла:
Число повторений
цикла неизвестно
Число повторений
цикла неизвестно

More Related Content

What's hot

Алгоритмическая конструкция Повторение
Алгоритмическая конструкция ПовторениеАлгоритмическая конструкция Повторение
Алгоритмическая конструкция ПовторениеAndrey Dolinin
 
Запись вспомогательный алгоритмов на языка Паскаль
Запись вспомогательный алгоритмов на языка ПаскальЗапись вспомогательный алгоритмов на языка Паскаль
Запись вспомогательный алгоритмов на языка ПаскальAndrey Dolinin
 
5.4 Ключевые слова static и inline
5.4 Ключевые слова static и inline5.4 Ключевые слова static и inline
5.4 Ключевые слова static и inlineDEVTYPE
 
Cоставной
CоставнойCоставной
CоставнойOlgaDask
 
Презентация на тему: ЕГЭ информатика
Презентация на тему: ЕГЭ информатикаПрезентация на тему: ЕГЭ информатика
Презентация на тему: ЕГЭ информатика2berkas
 
Одномерные массивы целых чисел
Одномерные массивы целых чиселОдномерные массивы целых чисел
Одномерные массивы целых чиселAndrey Dolinin
 
Представление информации в компьютере
Представление информации в компьютереПредставление информации в компьютере
Представление информации в компьютереAndrey Dolinin
 
2.8 Строки и ввод-вывод
2.8 Строки и ввод-вывод2.8 Строки и ввод-вывод
2.8 Строки и ввод-выводDEVTYPE
 
тема 2.операторы.линейный алгоритм
тема 2.операторы.линейный алгоритмтема 2.операторы.линейный алгоритм
тема 2.операторы.линейный алгоритмdasha2012
 
3.3 Конструкторы и деструкторы
3.3 Конструкторы и деструкторы3.3 Конструкторы и деструкторы
3.3 Конструкторы и деструкторыDEVTYPE
 
5.1 Перегрузка операторов
5.1 Перегрузка операторов5.1 Перегрузка операторов
5.1 Перегрузка операторовDEVTYPE
 
оператор присваивания и процедуры ввода и вывода
оператор присваивания и процедуры ввода и выводаоператор присваивания и процедуры ввода и вывода
оператор присваивания и процедуры ввода и выводаliza2209
 
3.1 Структуры
3.1 Структуры3.1 Структуры
3.1 СтруктурыDEVTYPE
 
2.2 Стек вызовов
2.2 Стек вызовов2.2 Стек вызовов
2.2 Стек вызововDEVTYPE
 
Prezentatsia
Prezentatsia Prezentatsia
Prezentatsia weidar
 
Matlab: Вычисление производной
Matlab: Вычисление производнойMatlab: Вычисление производной
Matlab: Вычисление производнойDmitry Bulgakov
 

What's hot (20)

Алгоритмическая конструкция Повторение
Алгоритмическая конструкция ПовторениеАлгоритмическая конструкция Повторение
Алгоритмическая конструкция Повторение
 
Запись вспомогательный алгоритмов на языка Паскаль
Запись вспомогательный алгоритмов на языка ПаскальЗапись вспомогательный алгоритмов на языка Паскаль
Запись вспомогательный алгоритмов на языка Паскаль
 
5.4 Ключевые слова static и inline
5.4 Ключевые слова static и inline5.4 Ключевые слова static и inline
5.4 Ключевые слова static и inline
 
Cоставной
CоставнойCоставной
Cоставной
 
Презентация на тему: ЕГЭ информатика
Презентация на тему: ЕГЭ информатикаПрезентация на тему: ЕГЭ информатика
Презентация на тему: ЕГЭ информатика
 
Одномерные массивы целых чисел
Одномерные массивы целых чиселОдномерные массивы целых чисел
Одномерные массивы целых чисел
 
Представление информации в компьютере
Представление информации в компьютереПредставление информации в компьютере
Представление информации в компьютере
 
Тип данных Pointer
Тип данных PointerТип данных Pointer
Тип данных Pointer
 
2.8 Строки и ввод-вывод
2.8 Строки и ввод-вывод2.8 Строки и ввод-вывод
2.8 Строки и ввод-вывод
 
лекция 3
лекция 3лекция 3
лекция 3
 
тема 2.операторы.линейный алгоритм
тема 2.операторы.линейный алгоритмтема 2.операторы.линейный алгоритм
тема 2.операторы.линейный алгоритм
 
3.3 Конструкторы и деструкторы
3.3 Конструкторы и деструкторы3.3 Конструкторы и деструкторы
3.3 Конструкторы и деструкторы
 
лекция 1
лекция 1лекция 1
лекция 1
 
5.1 Перегрузка операторов
5.1 Перегрузка операторов5.1 Перегрузка операторов
5.1 Перегрузка операторов
 
оператор присваивания и процедуры ввода и вывода
оператор присваивания и процедуры ввода и выводаоператор присваивания и процедуры ввода и вывода
оператор присваивания и процедуры ввода и вывода
 
3.1 Структуры
3.1 Структуры3.1 Структуры
3.1 Структуры
 
2.2 Стек вызовов
2.2 Стек вызовов2.2 Стек вызовов
2.2 Стек вызовов
 
Урок 8. Введение в редукцию графов
Урок 8. Введение в редукцию графовУрок 8. Введение в редукцию графов
Урок 8. Введение в редукцию графов
 
Prezentatsia
Prezentatsia Prezentatsia
Prezentatsia
 
Matlab: Вычисление производной
Matlab: Вычисление производнойMatlab: Вычисление производной
Matlab: Вычисление производной
 

Similar to 8 3-5 (20)

паскаль
паскальпаскаль
паскаль
 
лр4
лр4лр4
лр4
 
Цикл For
Цикл ForЦикл For
Цикл For
 
Lektsia 9
Lektsia 9Lektsia 9
Lektsia 9
 
Циклы
ЦиклыЦиклы
Циклы
 
Цикл
Цикл Цикл
Цикл
 
Python
PythonPython
Python
 
циклы
циклыциклы
циклы
 
паскаль. часть1
паскаль. часть1паскаль. часть1
паскаль. часть1
 
циклы1
циклы1циклы1
циклы1
 
циклы1
циклы1циклы1
циклы1
 
Pril
PrilPril
Pril
 
циклы
циклыциклы
циклы
 
1 вводное занятие
1 вводное занятие1 вводное занятие
1 вводное занятие
 
22 pascal urok_6
22 pascal urok_622 pascal urok_6
22 pascal urok_6
 
2. Операторы языка C#
2. Операторы языка C#2. Операторы языка C#
2. Операторы языка C#
 
ветвление.условный оператор.циклы
ветвление.условный оператор.циклыветвление.условный оператор.циклы
ветвление.условный оператор.циклы
 
лекция 3. программирование циклов
лекция 3. программирование цикловлекция 3. программирование циклов
лекция 3. программирование циклов
 
язык програмирования
язык програмированияязык програмирования
язык програмирования
 
106170
106170106170
106170
 

More from natanikonenko19

More from natanikonenko19 (8)

8 3-2
8 3-28 3-2
8 3-2
 
8 3-1
8 3-18 3-1
8 3-1
 
8 2-1
8 2-18 2-1
8 2-1
 
6 9-1-informacionnoe-modelirovanie
6 9-1-informacionnoe-modelirovanie6 9-1-informacionnoe-modelirovanie
6 9-1-informacionnoe-modelirovanie
 
Inf tema 3_urok_16_6-klas
Inf tema 3_urok_16_6-klasInf tema 3_urok_16_6-klas
Inf tema 3_urok_16_6-klas
 
Cфера и шар
Cфера и шарCфера и шар
Cфера и шар
 
Локальная сеть и ее топология
Локальная сеть и ее топологияЛокальная сеть и ее топология
Локальная сеть и ее топология
 
Информация.
Информация.Информация.
Информация.
 

8 3-5

  • 2. Ключевые слова •while ( цикл-ПОКА) •repeat (цикл-ДО) •for (цикл с параметрами)
  • 3. Программирование циклов с заданным условием продолжения работы Общий вид оператора: whilewhile <условие> dodo <оператор> Здесь: <условие> - логическое выражение; пока оно истинно, выполняется тело цикла; <оператор> - простой или составной оператор, с помощью которого записано тело цикла. Тело цикла Условие да нет
  • 4. да нет Начало Список данных x, y, r, q - цел x, y r:=x q:=0 r >=у r:= r - y q:= q +1 Конец q, r program n_14; var x, y, q, r: integer; begin writeln ('Частное и остаток'); write ('Введите делимое x>>'); readln (x); write ('Введите делитель y>>'); read (y); r:=x; q:=0; while r>=y do begin r:=r-y; q:=q+1 end; writeln ('Частное q=', q); writeln ('Остаток r=', r) end.
  • 5. Программирование циклов с заданным условием окончания работы Общий вид оператора: repeatrepeat <оператор1; оператор2; …; > untiluntil <условие> Здесь: <оператор1>; <оператор2>; … - операторы, образующие тело цикла; <условие> - логическое выражение; если оно ложно, то выполняется тело цикла. Тело цикла Условие да нет
  • 6. program n_15; var i: integer; x: real; begin writeln ('График тренировок'); i:=1; x:=10; repeat i:=i+1; x:=x+0.1*x; until x>=25; writeln ('Начиная с ', i, '-го дня спортсмен будет пробегать 25 км') end. Конец да нет Начало Список данных i – цел x- вещ i := 1 x := 10 x>= 25 i := i +1 x := x +0.1*x i
  • 7. Программирование циклов с заданным числом повторений Общий вид оператора: forfor <параметр>:=<начальное_значение> toto <конечное_значение> dodo <оператор> Здесь: <параметр> - переменная целого типа; <начальное_значение> и <конечное_значение> - выражения того же типа, что и параметр; <оператор> - простой или составной оператор - тело цикла. После каждого выполнения тела цикла происходит увеличение на единицу параметра цикла; условие выхода из цикла - превышение параметром конечного значения. Тело цикла i = i1, i2
  • 8. program n_16; var i,n:integer;a,y:real; begin writeln ('Возведение в степень'); write ('Введите основание a>>'); readln (a); write ('Введите показатель n>>'); readln (n); y:=1; for i:=1 to n do y:=y*a; writeln ('y=', y) end. Конец Начало Список данных i, n – цел a, y – вещ y := 1 y := y * a y a, n i = 1, n
  • 9. Различные варианты программирования циклического алгоритма Для решения одной и той же задачи могут быть созданы разные программы. Организуем ввод целых чисел и подсчёт количества введённых положительных и отрицательных чисел. Ввод должен осуществляться до тех пор, пока не будет введён ноль. В задаче в явном виде задано условие окончания работы. Воспользуемся оператором repeatrepeat.
  • 10. program n_17; var n, k1, k2: integer; begin k1:=0; k2:=0; repeat write ('Введите целое число>>'); readln (n); if n>0 then k1:=k1+1; if n<0 then k2:=k2+1; until n=0; writeln ('Введено:'); writeln ('положительных чисел – ', k1); writeln ('отрицательных чисел – ', k2) end. да нет n n > 0 Начало Список данных n, k1, k2 - цел n < 0 n = 0 k1, k2 Конец k1:=0 k2:=0 k1:=k1+1 k2:=k2+1 да да нет нет
  • 11. Ввод осуществляется до тех пор, пока не будет введён ноль. Работа продолжается, пока n 0. Воспользуемся оператором whilewhile: program n_18; var n, k1, k2: integer; begin k1:=0; k2:=0; n:=1; while n<>0 do begin writeln ('Введите целое число>>'); read (n); if n>0 then k1:=k1+1; if n<0 then k2:=k2+1; end; writeln ('Введено:'); writeln ('положительных – ', k1); writeln ('отрицательных – ', k2) end. ≠ да n > 0 да нет Начало Список данных n, k1, k2 - цел n <> 0 k1, k2 Конец k1:=0 k2:=0 n:=1 k1:=k1+1 k2:=k2+1 нет n
  • 12. Самое главное В языке Паскаль имеются три вида операторов цикла: while цикл-ПОКА) repeat (цикл-ДО) for (цикл с параметром). Если число повторений тела цикла известно, то лучше воспользоваться оператором for; в остальных случаях используются операторы while и repeat.
  • 13. Вопросы и задания Дана последовательность операторов: a:=1; b:=2; while a+b<8 do begin a:=a+1; b:=b+2; end; s:=a+b Сколько раз будет повторен цикл и какими будут значения переменных a, b, s после исполнения этой последовательности операторов? Пример входных данных Пример выходных данных Введите n> 5 5! = 120 Введите n> 6 6! = 720 Требовалось написать программу вычисления факториала числа n (факториал числа n есть произведение всех целых чисел от 1до n). Программист торопился и написал программу неправильно. Ниже приведён фрагмент его программы, в котором содержится пять ошибок: k:=1; f:=0; while k<n do f:=f*k; k:=k+1 Найдите ошибки. Допишите необходимые операторы. Проанализируйте следующий цикл: while a<b do c:=a=b; В чём его особенность? Дана последовательность операторов: a:=1; b:=1; repeat a:=a+1; b:=b*2; until b>8; s:=a+b Сколько раз будет повторён цикл и какими будут значения переменных a, b, s после исполнения этой последовательности операторов? Напишите программу, в которой осуществляется ввод целых чисел (ввод осуществляется до тех пор, пока не будет введён ноль) и подсчёт суммы и среднего арифметического введённых положительных чисел. Используйте оператор repeat. Напишите программу, в которой осуществляется ввод целых чисел (ввод осуществляется до тех пор, пока не будет введён ноль) и определение максимального (наибольшего) из введённых чисел. Используйте оператор repeat.repeat. Напишите программу вычисления наибольшего общего делителя двух целых чисел: а) используйте оператор repeat; б) используйте оператор while. Сколько раз будет выполнен цикл? а) for i:=0 to 15 do s:=s+1; б) for i:=10 to 15 do s:=s+1; в) for i:=-1 to 1 do s:=s+1; г) for i:=10 to 10 do s:=s+1; д) k:=5; for i:=k-1 to k+1 do s:=s+1; Напишите программу, которая 10 раз выводит на экран ваши имя и фамилию. Напишите программу, выводящую на экран изображение шахматной доски, где чёрные клетки изображаются звёздочками, а белые - пробелами. Рекомендуемый вид экрана после выполнения программы представлен ниже: * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Напишите программу, которая вычисляет сумму: а) первых n натуральных чисел; б) квадратов первых n натуральных чисел; в) всех чётных чисел в диапазоне от 1 до n; г) всех двузначных чисел. Напишите программу, которая генерирует 10 случайных чисел в диапазоне от 1 до 20, выводит эти числа на экран и вычисляет их среднее арифметическое. Напишите программу, которая выводит на экран таблицу степеней двойки (от нулевой до десятой). Рекомендуемый вид экрана после выполнения программы представлен ниже: Таблица степеней двойки: 0 1 1 2 2 4 3 8 4 16 5 32 6 64 7 128 8 256 9 512 10 1024 Пример входных данных Пример выходных данных Введите n> 5 5 * 2 = 10 5 * 3 = 15 5 * 4 = 20 5 * 5 = 25 5 * 6 = 30 5 * 7 = 35 5 * 8 = 40 5 * 9 = 45 5 * 10 = 50 Напишите программу, которая выводит на экран таблицу умножения на n (n - целое число в диапазоне от 2 до 10, вводимое с клавиатуры). Какой из трёх рассмотренных операторов цикла является, по вашему мнению, основным, т. е. таким, что им можно заменить два других? Обоснуйте свою точку зрения.
  • 14. Опорный конспект while (цикл-ПОКA)while (цикл-ПОКA) repeat (цикл-ДО)repeat (цикл-ДО) for (цикл с параметром)for (цикл с параметром) Число повторений цикла известно Число повторений цикла известно В языке Паскаль имеются три вида операторов цикла: Число повторений цикла неизвестно Число повторений цикла неизвестно