Главная страница

ПРОГРАММИРОВАНИЕ ЦИКЛИЧЕСКИХ АЛГОРИТМОВ. Программирование циклических алгоритмов ключевые слова while ( циклпока) repeat (циклдо)


Скачать 164.5 Kb.
НазваниеПрограммирование циклических алгоритмов ключевые слова while ( циклпока) repeat (циклдо)
АнкорПРОГРАММИРОВАНИЕ ЦИКЛИЧЕСКИХ АЛГОРИТМОВ
Дата09.04.2023
Размер164.5 Kb.
Формат файлаpptx
Имя файлаПРОГРАММИРОВАНИЕ ЦИКЛИЧЕСКИХ АЛГОРИТМОВ.pptx
ТипДокументы
#1047783

ПРОГРАММИРОВАНИЕ ЦИКЛИЧЕСКИХ АЛГОРИТМОВ

Ключевые слова
  • while ( цикл-ПОКА)
  • repeat (цикл-ДО)
  • for (цикл с параметрами)

Программирование циклов с заданным условием продолжения работы

Общий вид оператора:

while <условие> do <оператор>

Здесь:

<условие> - логическое выражение; пока оно истинно, выполняется тело цикла;

<оператор> - простой или составной оператор, с помощью которого записано тело цикла.

Тело цикла

Условие

да

нет

да

нет

Начало

Список данных

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.

Программирование циклов с заданным условием окончания работы

Общий вид оператора:

repeat <оператор1; оператор2; …; > until <условие>

Здесь:

<оператор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

Программирование циклов с заданным числом повторений

Общий вид оператора:

for <параметр>:=<начальное_значение>

to <конечное_значение> do <оператор>

Здесь:

<параметр> - переменная целого типа;

<начальное_значение> и <конечное_значение> - выражения того же типа, что и параметр;

<оператор> - простой или составной оператор - тело цикла.

Тело цикла

i = i1, i2

Программирование циклов с заданным числом повторений

Общий вид оператора:

for <параметр>:=<начальное_значение>

to <конечное_значение> do <оператор>

После каждого выполнения тела цикла происходит увеличение на единицу параметра цикла; условие выхода из цикла – превышение параметром конечного значения.

Тело цикла

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

Различные варианты программирования циклического алгоритма

Для решения одной и той же задачи могут быть созданы разные программы.

Организуем ввод целых чисел и подсчёт количества введённых положительных и отрицательных чисел. Ввод должен осуществляться до тех пор, пока не будет введён ноль.

В задаче в явном виде задано условие окончания работы.

Воспользуемся оператором repeat.

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.

Воспользуемся оператором while:

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.

Вопросы и задания

1. Дана последовательность операторов:

a:=1;

b:=2;

while a+b<8 do

begin

a:=a+1;

b:=b+2;

end;

s:=a+b

Сколько раз будет повторен цикл и какими будут значения переменных a, b, s после исполнения этой последовательности операторов?

Вопросы и задания

2. Требовалось написать программу вычисления факториала числа n (факториал числа n есть произведение всех целых чисел от 1 до n).

Программист торопился и написал программу неправильно.

Ниже приведён фрагмент его программы, в котором содержится пять ошибок:

k:=1;

f:=0;

while k
f:=f*k;

k:=k+1

Найдите ошибки. Допишите необходимые операторы.

Пример входных данных

Пример выходных данных

Введите n> 5

5! = 120

Введите n> 6

6! = 720

Вопросы и задания

3. Дана последовательность операторов:

a:=1;

b:=1;

repeat

a:=a+1;

b:=b*2;

until b>8;

s:=a+b

Сколько раз будет повторён цикл и какими будут значения переменных a, b, s после исполнения этой последовательности операторов?

Вопросы и задания

4. Напишите программу, в которой осуществляется ввод целых чисел (ввод осуществляется до тех пор, пока не будет введён ноль) и подсчёт суммы и среднего арифметического введённых положительных чисел.

Используйте оператор repeat.

Вопросы и задания

5. Напишите программу, в которой осуществляется ввод целых чисел (ввод осуществляется до тех пор, пока не будет введён ноль) и определение максимального (наибольшего) из введённых чисел.

Используйте оператор repeat.

Вопросы и задания

6. Напишите программу вычисления наибольшего общего делителя двух целых чисел:

а) используйте оператор repeat;

б) используйте оператор while.

Вопросы и задания

7. Сколько раз будет выполнен цикл?

а) 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;

Вопросы и задания

8. Напишите программу, которая 10 раз выводит на экран ваши имя и фамилию.

Вопросы и задания

9. Напишите программу, выводящую на экран изображение шахматной доски, где чёрные клетки изображаются звёздочками, а белые - пробелами. Рекомендуемый вид экрана после выполнения программы представлен ниже:

* * * *

* * * *

* * * *

* * * *

* * * *

* * * *

* * * *

* * * *

Вопросы и задания

10. Напишите программу, которая вычисляет сумму:

а) первых n натуральных чисел;

б) квадратов первых n натуральных чисел;

в) всех чётных чисел в диапазоне от 1 до n;

г) всех двузначных чисел.

Вопросы и задания

11. Напишите программу, которая генерирует 10 случайных чисел в диапазоне от 1 до 20, выводит эти числа на экран и вычисляет их среднее арифметическое.

Вопросы и задания

12. Напишите программу, которая выводит на экран таблицу степеней двойки (от нулевой до десятой).

Рекомендуемый вид экрана после выполнения программы представлен ниже:

Таблица степеней двойки:

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

13. Напишите программу, которая выводит на экран таблицу умножения на n (n - целое число в диапазоне от 2 до 10, вводимое с клавиатуры).

Вопросы и задания

14. Какой из трёх рассмотренных операторов цикла является, по вашему мнению, основным, т. е. таким, что им можно заменить два других?

Обоснуйте свою точку зрения.

Опорный конспект

while (цикл-ПОКA)

repeat (цикл-ДО)

for (цикл с параметром)

Число повторений

цикла известно

В языке Паскаль имеются три вида операторов цикла:

Число повторений

цикла неизвестно


написать администратору сайта