Ihads.ru

Все про недвижимость
15 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Учитель информатики

Учитель информатики

§ 3.5 Программирование циклических алгоритмов

Информатика. 8 класса. Босова Л.Л. Оглавление

Ключевые слова:

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

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

Цикл с заданным условием продолжения работы (цикл-ПОКА) программируется в языке Паскаль с помощью оператора while. Общий вид оператора:

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

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

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

Запишем на языке Паскаль рассмотренный в п. 2.4.3 (пример 14) алгоритм получения частного q и остатка r от деления натурального числа х на натуральное число y без использования операции деления.

Каким будет результат выполнения программы при х = -10 и у = 3? Как вы можете объяснить этот результат?

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

Цикл с заданным условием окончания работы (цикл-ДО) программируется в языке Паскаль с помощью оператора repeat. Общий вид оператора:

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

<оператор1>; <оператор2>; … — операторы, образующие тело цикла;

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

Запишем на языке Паскаль рассмотренный в п. 2.4.3 (пример 17) алгоритм решения задачи о графике тренировок спортсмена.

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

Цикл с заданным числом повторений (цикл-ДЛЯ) программируется в языке Паскаль с помощью оператора for. Его общий вид:

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

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

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

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

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

Запишем на языке Паскаль рассмотренный в п. 2.4.3 (пример 19) алгоритм вычисления степени с натуральным показателем n для любого вещественного числа а.

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

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

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

Так как здесь в явном виде задано условие окончания работы, то воспользуемся оператором repeat.

Имеющееся условие окончания работы можно достаточно просто преобразовать в условие продолжения работы — работа продолжается, пока n?0. И мы можем воспользоваться оператором while:

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

САМОЕ ГЛАВНОЕ

В языке Паскаль имеются три вида операторов цикла: while (цикл-ПОКА), repeat (цикл-ДО), for (цикл с параметром). Если число повторений тела цикла известно, то лучше воспользоваться оператором for; в остальных случаях используются операторы while и repeat.

Читайте так же:
Статистика сайтов скрытый счетчик

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

1. Ознакомьтесь с материалами презентации к параграфу, содержащейся в электронном приложении к учебнику. Используйте эти материалы при подготовке ответов на вопросы и выполнении заданий.

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

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

3. Требовалось написать программу вычисления факториала числа n (факториал числа n есть произведение всех целых чисел от 1 до n). Программист торопился и написал программу неправильцо. Ниже приведён фрагмент его программы, в котором содержатся пять ошибок:

Найдите ошибки. Допишите необходимые операторы и выполните программу на компьютере.

4. Проанализируйте следующий цикл:

while a<b do

В чём его особенность?

5. Запишите на языке Паскаль программы решения задач № 25-29 из § 2.4. Используйте оператор while.

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

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

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

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

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

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

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

а) for i:=0 to 15 do s:=s+l;
б) for i:=10 to 15 do s:=s+l;
в) for i:=-l to 1 do s:=s+l;
г)for i:=10 to 10 do s:=s+l;
д)k:=5;

for i:=k-l to k+1 do s:=s+l;

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

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

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

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

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

15. Запишите на языке Паскаль программы решения задач № 32, 33 из § 2.4. Используйте оператор for.

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

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

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

Читайте так же:
Управляемый счетчик для сайта

While, или цикл с предусловием

Как вы, наверное, уже поняли из названия, while — это цикл, в котором условие стоит перед телом. Причем тело цикла выполняется тогда и только тогда, когда условие true; как только условие становится false, выполнение цикла прекращается.

While имеет формат:

while do ;

Данный цикл подходит только для одного оператора, если же вы хотите использовать несколько операторов в своем коде, вам следует заключить их в операторные скобки — begin и end;.

Цикл «Для каждого Цикл»

Этот вид цикла предназначен для обхода различных коллекций, например, массивов, таблиц значений, табличных частей и т.д.

Этот цикл имеет следующий синтаксис:

Переменной ЭлементКоллекции присваивает очередное значение элемента коллекции.

Например, если мы напишем вот такой код.

То при первом обходе переменная ЭлМассива будет равна 100, при втором — 45, а при третьем – 1000.

Это массив, у него, по сути, каждый элемент это значение какого-то типа, а если будет обход более сложной коллекции? Например, таблицы значений. В том случае, если будет обход таблицы, значений, то в переменной ЭлементКоллекции будет содержать очередная строка этой таблицы значений. Мы можем получить значение колонок в этой строке через оператор «.».

Пример в этом коде

И результат работы этого кода

Обход циклом Для каждого цикл

§ 8.8. Программирование циклических алгоритмов. Цикл с условием

Цикл – это алгоритмическая структура, в которой одни и те же инструкции выполняются периодически, в зависимости от условия. В качестве условия (как и в условной инструкции) может быть любое выражение возвращающее числовое значение. Если оно отлично от нуля, то это интерпретируется как True . Если выражение вычисляется как 0 (в том числе, как действительный ноль 0.0 ), то это интерпретируется как False . Условие, которое вычисляется как True , позволяет выполнить один шаг цикла, который состоит в том, что будут выполнены одна или несколько инструкций, находящихся в теле цикла.

Существуют несколько разновидностей циклов. Все они сводятся к трем основным видам:

  • цикл с предусловием,
  • цикл с постусловием и
  • цикл с параметром.

Инструкция while

В языке python цикл с предусловием реализован с помощью инструкции while . Инструкция while имеет следующий синтаксис:

while в python отличается наличием необязательного блока else , который выполняется, если логическое выражение приобретает ложное значение.

Этот тип цикла является универсальным, т. к. с помощью него может быть решена любая задача с циклом. Но цикл должен завершать свою работу по выполнению определенного количества шагов, а для этого необходимо изменять значения объектов (переменных влияющих на условие) в теле цикла так, чтобы условие могло, рано или поздно, принять значение False . В этом и есть основная сложность разработки циклического алгоритма с помощью while . Если алгоритм как следует не продумать, то цикл может уйти в бесконечное выполнение (“зацикливание”) и алгоритм никогда не завершит свою работу. Тем не менее, бесконечный цикл может быть организован намеренно (в программировании такое не редкость), скажем, для анализа вводимых данных.
Задача 1. Составить программу, в которой новое значение переменной присваивается в цикле.

Читайте так же:
Бланк квитанции многотарифного счетчика

В этом случае, выход из цикла программируется в теле цикла, например, с помощью инструкций if и break . В программе 8.8.1 цикл будет изменять значение переменной до тех пор, пока не будет введен 0 .
Рассмотрим несколько типичных задач в которых используется цикл типа while .

Счетчики и накопители

Самым простым способом выхода из цикла – это проверка выполненных шагов цикла. Для этих целей используется переменная-счетчик. Эта переменная изменяет свое значение с шагом 1 , начиная с 0 . Нулевое значение переменной присваивается до входа в цикл, а в теле цикла переменной инкрементируется новое значение. В условии цикла сравнивается текущее значение счетчика с максимально возможным (количеством шагов).
Задача 2. Вывести на экран n -первых натуральных чисел.

Блок-схема

Во многих задачах требуется “накапливать” значение переменной. Накапливать можно как сумму, так и произведение. Накопителю суммы до входа в цикл присваивается значение 0 , а накопителю произведения – 1 , т. е. значения, которые не изменят окончательный результат.
Примером задачи получения в цикле произведения является вычисление факториала числа: n! = 1 · 2 · 3 · . · n .
Задача 3. Дано целое n . Получить значение n!

Аналогично программируется и накопление суммы.
Задача 4. С клавиатуры вводится n целых чисел. Определить среднее арифметическое n введенных чисел.

На самом деле, в подобных задачах счетчик не так уж и нужен! Действительно, если известно общее количество шагов цикла n , то мы можем уменьшать значение n с каждым шагом цикла на единицу до тех пор, пока значение n не станет равным 0 (если, конечно, начальное значение n больше в программе не потребуется). Сформулировав логическое выражение сравнения n с 0 , мы можем создать условие выхода из цикла.
Задача 5. Составьте программу рисования n квадратов c общим центром и шагом (расстояние между сторонами квадратов) равным d .

Вывод

Параметры: n = 20, d = 10

Счетчик с произвольным шагом

В программах выше использовался счетчик с целочисленным шагом равным единице для определения количества шагов цикла. Но, в общем случае, счетчик может иметь произвольный шаг, в том числе дробный. Покажем это на примере.
Задача 6. Составить программу вывода таблицы значений квадратного корня чисел от 0.2 до 10.0 с шагом 0.2 и точностью до 4 знаков после запятой.

Возможно, программный код выглядит не очень изящно, но это неизбежная плата за табличное оформление вывода. Приведем пример с черепахой.
Задача 7. Составить программу в которой черепаха рисует параболу

Вывод

Проход циклом по разрядам числа

В заключении, обсудим еще один тип задач в которых производится действия с разрядами числа. В этих задачах для работы с отдельными разрядами числа применяются операции целочисленного деления, которые мы изучили ранее. Поскольку количество разрядов в числе заранее неизвестно, то исходное число, на каждом шаге цикла, делится на 10 (с каждым шагом удаляется младший разряд), пока частное не станет равным нулю. Это значение является основанием прекратить деление и выйти из цикла.
Усовершенствуем программу 8.5.1 так, чтобы в итоге обрабатывалось число произвольной разрядности.

Одна из задач такого рода – это перевод числа из 10 системы счисления (далее – с.с.) в с.с. по основанию q .
Задача 8. Дано цело десятичное число n . Перевести это число в с.с. с основанием q (целое число в интервале 2..9 )

Читайте так же:
Fujifilm x pro2 счетчик затвора

Идея алгоритма основана на способе “деления” описанного здесь. Суть его заключается в следующем. Исходное число делим на основание с.с. и получаем остатки от этого деления в цикле. Первый остаток – это младший разряд q -ичного числа. Последний – старший разряд. Для того, чтобы повысить старшинство разряда, мы умножаем полученный в каждом шаге цикла остаток на значение переменной p , которое, с каждым шагом цикла, возрастает в 10 раз. Само же число получаем в накопителе суммы – d (т. е. фактически мы производим расчеты в 10 с.с.). Встроенные возможности языка по переводу чисел в с.с. по основаниям 2..36 описаны нами ранее.

Циклический алгоритм икт паскаль пример. Циклические алгоритмы Виды циклов и циклические команды на Паскале. Выбор цикла зависит от особенностей условия задачи. Только практика подскажет Вам оптимальное решение

условием, и действие, которое необходимо выполнить только
после проверки условия используют цикл в предусловием.

Перед каждым выполнением тела цикла происходит проверка
условия, если результат «истина», то тело цикла выполняется
еще раз, если «ложь», то происходит выход из цикла.
На блок — схеме
Начало цикла
Нет
Условие
ДА
Тело цикла
Конец цикла
В Pascal
While do
begin

Цикл с постусловием

Цикл с параметром

Пример задачи с использованием цикла с предусловием
Теория

Словесный алгоритм:
Умножать число Х изначально равное 1
заданное число раз (Н) на 3.
начало
Programm Stepen;
Var
H,B,X:integer;
Begin
Writeln(‘Степень?’);
Readln(H);
X:=1;
B:=1;
While B =H;
Writeln (‘Результат’,X);
End.
начало
Н
Ввод заданной степени
X:=1
Начальные значения
B:=0
Умножение на 3
X:=X*3
Увеличение счетчика
В=В+1
Да
B>=H
«В» счетчик степени
Х
Вывод получившегося
значения
конец
Pascal
Блок-Схема
Пояснения

Выбор цикла зависит от особенностей условия задачи. Только практика подскажет Вам оптимальное решение.

Блок — схема к решению

Программа на Паскале

Посмотреть все слайды

Цикл с предусловием Если число повторений заранее неизвестно, а задано лишь условием, и действие, которое необходимо выполнить только после проверки условия используют цикл в предусловием. В качестве условия используется логическое выражение, тело цикла – простой или составной оператор. Перед каждым выполнением тела цикла происходит проверка условия, если результат «истина», то тело цикла выполняется еще раз, если «ложь», то происходит выход из цикла. На блок — схемеВ Pascal begin end; Условие Тело цикла Нет Практика Начало цикла Конец цикла ДА While do

Цикл с постусловием Если число повторений заранее неизвестно, а задано лишь условием, и действие, которое необходимо выполнить до проверки условия используют цикл с постусловием. В качестве условия используется логическое выражение, тело цикла – простой или составной оператор. После каждого выполнением тела цикла происходит проверка условия, если результат «ложь», то тело цикла выполняется еще раз, если «истина», то происходит выход из цикла. На блок — схемеВ Pascal Repeat Условие Тело цикла Да Нет Практика Until ;

Цикл с параметром В случаях, когда число повторений заранее известно применяется цикл в параметром. Переменная, задающая число повторений, называется параметром цикла, либо управляющей переменной. После каждого выполнения тела цикла управляющая переменная увеличивается либо уменьшается, цикл выполняется до тех пора пока она не превысит либо станет меньше ограничения. На блок — схемеВ Pascal Х – управляющая переменная (параметр цикла) А – начальное значение Х, В – конечное Х С – шаг изменения Х В качестве шага можно использовать только: «to» = 1; «downto» = -1 X:=A,В,C Тело цикла Практика For X:=A to B do Begin End;

Читайте так же:
Должны ли платить за общедомовые нужды если нет счетчика

Пример задачи с использованием цикла с предусловием Возвести число 3 в заданную степень ЗАДАЧА: Словесный алгоритм: Умножать число Х изначально равное 1 заданное число раз (Н) на 3. начало Н BHBH X:=1 X:=X*3 конец Х Ввод заданной степени Начальные значения «В» счетчик степени В=В+1 Умножение на 3 Увеличение счетчика Вывод получившегося значения Programm Stepen; Var H,B,X:integer; Begin Writeln(Степень?); Readln(H); X:=1; B:=1; While B

H X:=1 X:=X*3 конец Х Ввод заданной степени Начальные зн» title > 8 Пример задачи с использованием цикла с постусловием Возвести число 3 в заданную степень ЗАДАЧА: Словесный алгоритм: Умножать число Х изначально равное 1 заданное число раз (Н) на 3. начало Н B>=H X:=1 X:=X*3 конец Х Ввод заданной степени Начальные значения «В» счетчик степени В=В+1 Умножение на 3 Увеличение счетчика Вывод получившегося значения Programm Stepen; Var H,B,X:integer; Begin Writeln(Степень?); Readln(H); X:=1; B:=0; Repeat X:=X*3; B:=B+1; Until B>=H; Writeln (Результат,X); End. Нет Да Теория Pascal Блок-Схема Пояснения B:=0 =H X:=1 X:=X*3 конец Х Ввод заданной степени Начальные зн»> =H X:=1 X:=X*3 конец Х Ввод заданной степени Начальные значения «В» счетчик степени В=В+1 Умножение на 3 Увеличение счетчика Вывод получившегося значения Programm Stepen; Var H,B,X:integer; Begin Writeln(Степень?); Readln(H); X:=1; B:=0; Repeat X:=X*3; B:=B+1; Until B>=H; Writeln (Результат,X); End. Нет Да Теория Pascal Блок-Схема Пояснения B:=0″> =H X:=1 X:=X*3 конец Х Ввод заданной степени Начальные зн» title > title >

Пример задачи с использованием цикла с параметром Возвести число 3 в заданную степень ЗАДАЧА: Словесный алгоритм: Умножать число Х изначально равное 1 заданное число раз (Н) на 3. начало Н X:=1 X:=X*3 конец Х Ввод заданной степени Начальное значение Х=1 Параметры от 1 до Н Умножение на 3 Вывод получившегося значения Programm Stepen; Var H,B,X:integer; Begin Writeln(Степень?); Readln(H); X:=1; For B:=1 to H do Begin X:=X*3; End; Writeln (Результат,X); End. B:=1,H,1 Теория Pascal Блок-Схема Пояснения

Задача: Начав тренировки, спортсмен в первый день пробежал 10 км. Каждый день он увеличивал дневную норму на 10% нормы предыдущего дня. Какой суммарный путь пробежит спортсмен за 7 дней. Входные переменные: Выходные переменные: S – общий путь d – количество дней Sd – расстояние за текущий день

Конец Вопросы для контроля: 1.Каким оператором в Pascal задается цикл с предусловием 2.Как в цикле в параметром указывать шаг «1» и «-1» 3.По какой ветке происходит выход из цикла с постусловием 4.Есть ли в цикле с параметром условия 5.Что может быть телом цикла 6.Когда используется цикл с параметрами

голоса
Рейтинг статьи
Ссылка на основную публикацию
Adblock
detector