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

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

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

Оператор for to do — цикл со счётчиком

В сегодняшней статье разберем самый популярный вид цикла в языках программирования. Это цикл с параметром. У него есть и другие названия: цикл-для, цикл со счетчиком (оператор for to do, оператор цикла с параметром). Особенность данного цикла заключается в том, что использовать его нужно когда заранее известно количество повторений команд.

Посмотрите на рисунок ниже. Там представлена блок схема for (блок-схема цикла с параметром) и его запись на языке программирования Паскаль.
Циклический алгоритм с параметром
Параметр это целая величина, которая обозначается любой латинской буквой. Чаще всего используют символ — i. Начальные и конечные значения параметра тоже целые числа. Счетчик цикла может работать в двух направлениях: увеличение или уменьшение значения параметра.

Разберемся, как работает for в паскале. Выполнение начинается с получения переменной i начального значения а. Затем проверяется это значение с конечным значением n. Выполнение операторов цикла происходит в случае, когда i меньше или равно n (при положительном шаге счетчика) или i больше или равно n (при отрицательном шаге счетчика).

Задачи на циклы в паскале с решением

Задание 1. Напишите программу, которая выводит на экран 10 строк следующего содержания: «**++==++**»

Источник

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

Главное меню

Популярные статьи

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

Цель: дать понятие о циклах с параметром, блок-схемах, изображающих такие циклы. Учить на частных примерах составлять блок-схемы и программы с циклами; дать понятие о различиях между циклами с предусловием, постусловием и циклом с параметром; учить в одной программе использовать разные циклы, если программа содержит несколько циклов; вводить и выполнять программы, используя компиляторы BPW или Turbo Pascal.

for i := a to b do s1;

for k := p to m do
begin
s1;
s2;
.
sn
end;

Графическое изображение циклов for будет таким (см. рис. 33):
Циклический алгоритм с параметром
Рис. 33

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

Пример 1. Составить программу вычисления факториала числа n, т. е. n!.

Вспомним из математики, что факториал числа n равен произведению чисел от 1 до n.
Например:

Замечание. В математике принято: 0! = 1.

Блок-схема

Циклический алгоритм с параметром
Рис. 34

Программа

Program Problem1; < Вычисление факториала числа n! >
uses WinCrt;
var
n, f, i : longint;
begin
write(«Введите натуральное число «); readln(n);
f := 1;
if n <> 0 then for i := 1 to n do f := f*i;
writeln(«Факториал числа «, n, » равен «, f)
end.

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

Program Problem1a;
uses WinCrt;
var
n, i, f : longint;
begin
write(«Введите натуральное число «); readln(n);
f := 1;
if n <> 0 then for i := n downto 1 do f := f*i;
writeln(«Факториал числа «, n, » равен «, f)
end.

Задание 1
1. Выполните программу примера 1 на компьютерах.
2. Измените и дополните ее так, чтобы она вычисляла следующую сумму:

Ясно, что цикл в программе надо организовать от 1 до n, в котором выполнять всего три оператора: находить сумму нечетных чисел (а их как раз столько, сколько раз будет выполняться цикл); выдавать полученную сумму на экран; «получать» следующее нечетное число.

Блок-схема

Циклический алгоритм с параметром
Рис. 35

Программа

Program Problem2;
uses WinCrt;
var
i, n, s, k: integer;
begin
writeln(«Введите натуральное число, до которого надо»);
write(«выводить квадраты чисел «); readln(n);
writeln(«Квадраты чисел следующие:»);
s := 0; k := 1;
for i := 1 to n do
begin
s := s + k;
writeln(«Квадрат числа «, i, » равен «, s);
k := k + 2
end
end.

1. Измените программу так, чтобы она выдавала на экран не таблицу квадратов чисел от 1 до n, а квадрат только одного числа n, введенного пользователем.

3. Продолжая тему возведения натуральных чисел в степень, без операций умножения, рассмотрим еще два интересных примера. В первом из них нам придется совмещать, «вкладывать» друг в друга два цикла for, а во втором, циклы for и repeat.

Блок-схема

Циклический алгоритм с параметром
Рис. 36

Программа

Program Problem3; < Кубы натуральных чисел от 1 до n >
uses WinCrt;
var
i, j, n, s, k : longint;
begin
writeln(«Введите натуральное число, до которого надо»);
write(«выводить кубы чисел «); readln(n);
writeln(«Кубы чисел следующие:»);
k := 1;
for i := 1 to n do
begin
s := 0;
for j := 1 to i do
begin
s := s + k;
k := k + 2
end;
writeln(«Куб числа «, i, » равен «, s)
end
end.

Разберем работу этой программы

Заметьте! Переменной k не присваивается перед началом каждого внутреннего цикла 1. Почему?
Следующим оператором writeln внутри внешнего цикла выдается информация на экран. Почему он размещен во внешнем цикле?

Пример 4. Из математики известно, что всякая натуральная степень числа n есть сумма n последовательных нечетных натуральных чисел. Составьте программу, которая для любой степени натурального числа n находила бы последовательность нечетных чисел, сумме которых равна эта степень.

План составления программы

1. Определим цель составления программы: надо показать, что действительно любую натуральную степень натурального числа можно представить в виде суммы последовательных нечетных чисел.
А если это так, тогда нам совершенно необходимо знать значение степени числа n с показателем k.
Это можно сделать с помощью простого цикла:

s := 1;
for i := 1 to k do s := s*n;

3. Осталось продумать, как подсчитывать суммы последовательных нечетных чисел. Мы уже сталкивались с этим вопросом и знаем, что для этого надо создать цикл от 1 до n, в котором в одну из переменных, скажем m, накапливать эту сумму, а вторая переменная должна «вырабатывать» следующее нечетное число.
Этот цикл можно записать так:

p := j; m := 0;
for i := 1 to n do
begin
m := m + p;
p := p + 2
end;

Блок-схема

Циклический алгоритм с параметром
Рис. 37
Программа

Чтобы лучше понять ее работу, возьмите степень 25 и проверьте как будут последовательно выполняться операторы программы.

1. Выполните эту программу на компьютерах.

4. Разные задачи

Пример 5. Напечатать все четырехзначные числа, в десятичной записи которых нет двух одинаковых цифр.

Замечание. Перед началом составление блок-схемы этой задачи следует знать, как изображаются циклы в циклах, для циклов с параметрами. Общая конструкция двух вложенных циклов с параметрами будет такой:

Циклический алгоритм с параметром
Рис. 38
Сразу возникает мысль составить программу по следующей схеме:
организовать цикл по числу тысяч, t от 1 до 9, а затем внутренние циклы: по числу сотен, s от 0 до 9; по числу десятков, d от 0 до 9; по числу единиц, e от 0 до 9; проверка условия: если цифры различны, тогда составленное из них четырехзначное число выдавать на экран.
Блок-схема
Циклический алгоритм с параметром
Рис. 39
Программа

Понятно, что эта программа выполнена нерационально. В ней все циклы выполняются полностью.
Программу можно усовершенствовать таким путем. Когда выполняется цикл сотен, тогда следующий цикл десятков надо начинать выполнять, если цифра сотен s не равна цифре тысяч t, в противном случае, иначе, цикл сотен надо продолжить, т. е. взять следующую цифру сотен.
Для цифры десятков, также установить условие, что следующий цикл единиц будет выполняться, если цифра десятков d не равна цифре сотен и тысяч, в противном случае, иначе, надо переходить к следующей цифре десятков.
И тогда, «внутри» цикла единиц достаточно записать условие, если цифры единиц e не равны цифре десятков d, сотен s и тысяч t, тогда четырехзначное число является искомым и оно выводится на экран.

Блок-схема

Циклический алгоритм с параметром
Рис. 40

Программа

Задание 4

1. Дополните и измените эту программу так, чтобы она выдавала на экран не только различные четырехзначные числа, но и их количество.

for a := 1 to 20 do
for b := a to 20 do

for a := 20 downto 1 do
for b := 1 to a do

for a := 1 to 20 do
for b := 1 to a do

Нетрудно видеть, что при каждом из этих способов не будут повторяться пары чисел. Проверьте это самостоятельно.
Для значений c мы обязаны проверять все натуральные числа от 1 до 20 для каждой пары чисел a и b. Поэтому цикл для c должен быть таким: for c := 1 to 20 do

Блок-схема

Циклический алгоритм с параметром
Рис. 41

Программа

Program Problem6;
uses WinCrt;
var
a, b, c : integer;
begin
writeln(«Тройки Пифагоровых чисел из промежутка [1; 20]»);
for a := 1 to 20 do
for b := 1 to a do
for c := 1 to 20 do
if a*a + b*b = c*c then writeln(a, » «, b, » «, c)
end.

Пример 7. Сколькими способами заданное натуральное число n можно представить в виде суммы двух кубов натуральных чисел:

Сразу возникает следующая простая идея составления программы.

Сущность работы программы будет заключаться в следующем:

Это можно сделать так:

Дано натуральное n. Можно ли n представить в виде суммы трех квадратов натуральных чисел? Если можно, то указать все тройки x, y, z таких натуральных чисел, что Перестановка слагаемых нового способа не дает. Составить блок-схему и программу.

5. Преобразование типов

Пример 8. Двузначное десятичное число в сумме с числом, записанным теми же цифрами, но в обратном порядке, дает полный квадрат. Найти все такие числа.

Для этого в Паскале есть стандартные функции round(x) и trunc(x)

Блок-схема

Циклический алгоритм с параметром
Рис. 43

Программа

Program Problem8;
uses WinCrt;
var
d, e, k : integer;
begin
writeln(«Искомые двузначные числа»);
for d := 1 to 9 do
for e := 1 to 9 do
begin
k := round(sqrt(d*10 + e + e*10 + d));
if k*k = d*10 + e + e*10 + d
then write(d*10 + e, » «)
end
end.

Найти целые числа из заданного промежутка [m; n], которые являются точными квадратами и остаются таковыми после приписывания к ним справа единицы (в десятичной системе записи). Составить блок-схему и программу.

Автор: Тишин Владимир Иванович

Источник

Презентация к уроку

Цель: изучение алгоритмической структуры циклы, создание моделей и алгоритмов для решения практических задач.

Ход урока

I. Актуализация знаний

II. Теоретический материал урока

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

Пусть требуется ввести и обработать последовательность чисел. Если чисел всего пять, можно составить линейный алгоритм. Если их тысяча, записать линейный алгоритм можно, но очень утомительно и нерационально. Если количество чисел к моменту разработки алгоритма неизвестно, то линейный алгоритм принципиально невозможен.

Другой пример. Чтобы найти фамилию человека в списке, надо проверить первую фамилию списка, затем вторую, третью и т.д. до тех пор, пока не будет найдена нужная или не будет достигнут конец списка. Преодолеть подобные трудности можно с помощью циклов.

Циклом называется многократно исполняемый участок алгоритма (программы). Соответственно циклический алгоритм — это алгоритм, содержащий циклы.

Различают два типа циклов: с известным числом повторений и с неизвестным числом повторений. При этом в обоих случаях имеется в виду число повторений на стадии разработки алгоритма.

Существует 3 типа циклических структур:

Иначе данные структуры называют циклами типа «Пока», «До», «Для».

Графическая форма записи данных алгоритмических структур:

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

Цикл с предусловием (иначе цикл пока) имеет вид:

Форматы записи операторов алгоритмаБлок-схемаФорматы записи операторов на Паскале
Пока (условие)
нц
серия команд
кц
Циклический алгоритм с параметромwhile условие do
begin
серия команд;
end;

условие – выражение логического типа.

Цикл может не выполняться ни разу, если значение логического выражения сразу же оказывается ложь.

Серия команд, находящихся между begin и end, выполняются до тех пор, пока условие истинно.

Для того чтобы цикл завершился, необходимо, чтобы последовательность инструкций между BEGIN и END изменяла значение переменных, входящих в условие.

Цикл с постусловием (иначе цикл до) имеет вид:

Форматы записи операторов алгоритмаБлок-схемаФорматы записи операторов на Паскале
В алгоритмическом языке нет команды которая могла бы описать данную структуру, но ее можно выразить с помощью других команд (Например, ветвления).Циклический алгоритм с параметромrepeat серия команд
until
условие

условие – выражение логического типа.

Последовательность инструкций между repeat и until всегда будет выполнено хотя бы один раз;

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

Инструкция repeat, как и инструкция while, используется в программе, если надо провести некоторые повторяющиеся вычисления (цикл), однако число повторов заранее не известно и определяется самим ходом вычисления.

Цикл с параметром (иначе цикл для) имеет вид:

i – параметр цикла;
a – начальное значение цикла;
b – конечное значение цикла;
h – шаг изменения параметра.

Структура данного цикла иначе называют циклом i раз.

Эта команда выполняется таким образом: параметру i присваивается начальное значение а, сравнивается с конечным значением b и, если оно меньше или равно конечному значению b, выполняется серия команд. Параметру присваивается значение предыдущего, увеличенного на величину h – шага изменения параметра и вновь сравнивается с конечным значением b.

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

Если между begin и end находится только один оператор, то операторные скобки можно не писать. Это правило работает для цикла типа «Пока» и «Для».

Рассмотрим пример решения задач с использованием данных структур

Пример.

Вычислить произведение чисел от 1 до 5 используя различные варианты цикла

Составим алгоритм в виде блок-схемы.

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

Для проверки правильности алгоритма заполним трассировочную таблицу.

Источник

Циклические алгоритмы. Цикл с параметром

Урок 10. Основы алгоритмизации и программирования на языке Python

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

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

В данный момент вы не можете посмотреть или раздать видеоурок ученикам

Чтобы получить доступ к этому и другим видеоурокам комплекта, вам нужно добавить его в личный кабинет, приобрев в каталоге.

Получите невероятные возможности

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

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

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

Конспект урока «Циклические алгоритмы. Цикл с параметром»

· Принцип работы цикла с параметром.

· Программирование цикла с параметром.

· Функция генерации множества значений из указанного диапазона.

Рассмотрим пример. Допустим, нам необходимо вычислить произведение всех элементов некоторой числовой последовательности А. В этом случае нужно сначала присвоить переменной для хранения произведения p значение один, после чего необходимо перебрать все элементы последовательности А, умножая на них значение переменной p. После выполнения этих действий переменная p будет содержать произведение всех элементов числовой последовательности. Обратим внимание на то, что при описании этого цикла мы не использовали никаких условий.

Для решения такой задачи удобно использовать цикл с параметром. В общем случае его блок-схема выглядит так.

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

В верхнем блоке записывается имя параметра, например, i, а также указывается множество значений, которые он будет принимать. Часто в качестве множества указывается некоторый диапазон от начального до конечного значения, например, от 1 до 10, с некоторым шагом приращения параметра, например, с шагом, равным 3. В описанном нами цикле параметр i будет принимать значения: 1, 4, 7 и 10. То есть все значения из заданного множества.

Рассмотрим, как такой цикл записывается на языке Python. Вначале записывается служебное слово for, после которого следует имя параметра, а после него записывается служебное слово in и описывается множество значений параметра. После множества записывается двоеточие, а со следующей строки с отступом начинают записываться инструкции, составляющие тело цикла. Буквально на русский язык заголовок этого цикла можно перевести как «Для параметра, принимающего множество значений». Важно, что в теле цикла с параметром нельзя изменять значение параметра внутри тела цикла. Если это сделать, то цикл будет работать неправильно.

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

Множество значений параметра можно описать по-разному. Так, например, можно в круглых скобках через запятую перечислить все значения. Также в качестве множеств можно использовать списки, которые мы изучим позже, и диапазоны значений с определённым шагом.

Решим простую задачу с использованием цикла с параметром. Написать программу для вывода на экран кубов четырёх целых чисел, введённых пользователем. Для решения задачи нам нужно будет перебирать числа, введённые пользователем, возводить их в куб и выводить полученные значения на экран.

Начнём написание программы для решения задачи. Вначале с помощью инструкции print выведем на экран сообщение о том, что это программа, возводящая в куб четыре числа, и запрос на ввод этих чисел. Дальше считаем числа с клавиатуры в переменные a, b, c и d. Так как в условии задачи не сказано, что числа целые, то при считывании их значения мы будем преобразовывать в вещественный тип float. После того, как мы считали значения чисел, с помощь инструкции print выведем на экран текстовое сообщение «Кубы введённых чисел», заканчивающееся двоеточием. Для перебора четырёх чисел используем цикл для параметра i, принимающего множество значений, которое состоит из переменных a, b, c и d. Внутри заданного цикла запишем единственную инструкцию print, которая выводит на экран значение параметра i, возведённого в куб.

print (‘Программа, возводящая в куб 4 числа. Введите 4 числа.’)

a, b, c, d = float (input ()),float (input ()),float (input ()),float (input ())

print (‘Кубы введённых чисел:’)

Сохраним написанный модуль и запустим его на выполнение. Введём числа 1, 2, 3 и 4. Программа действительно вывела на экран значения кубов введённых чисел: 1, 8, 27 и 64. Программа работает правильно. Задача решена.

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

Рассмотрим ещё одну задачу. Написать программу, которая вычисляет значение факториала целого положительного числа n!. Факториалом натурального числа n! называется произведение всех целых чисел в диапазоне от 1 до n включительно. Очевидно, что для решения этой задачи необходимо перебрать все целые числа от 1 до n и перемножить их.

Начнём написание программы для решения задачи. Вначале выведем на экран сообщение о том, что это программа, вычисляющая значение n!, и запрос на ввод n. Теперь считаем значение n с клавиатуры. По условию задачи это целое число, поэтому при считывании будем преобразовывать его в целочисленный тип int. Теперь объявим переменную f для расчёта n!. Так как дальше в ней будет рассчитываться значение произведения, присвоим ей единицу. Теперь запишем цикл для вычисления факториала числа. Это будет цикл для параметра i, который будет принимать значения в диапазоне от 1 до n, включая концы с шагом, равным 1. Для генерации множества значений из этого диапазона запишем функцию range с параметрами 1 и n + 1, так как функция генерирует множество значений, не включая конец заданного диапазона. Так как шаг равен 1, то его указывать не требуется. Тело цикла будет содержать единственную инструкцию присваивания переменной f её собственного значения, умноженного на значение параметра i. После цикла с помощью инструкции print выведем на экран поясняющее сообщение о том, что факториал числа n равен значению переменной f.

print (‘Программа, вычисляющая значение n!. Введите n.’)

for i in range (1, n + 1):

Сохраним написанный модуль и запустим его на выполнение. Зададим n = 3. Действительно 3! = 6. Снова запустим программу и зададим n = 5. Действительно 5! = 120. Программа работает правильно. Задача решена.

Рассмотрим задачу посложнее. Написать программу, вычисляющую сумму всех нечётных чисел на промежутке от a до b, где a > b. Для решения задачи мы можем перебрать все целые числа на заданном промежутке, определяя их чётность, при этом нечётные числа мы должны учитывать при вычислении суммы.

Напишем программу для решения задачи. Вначале с помощью инструкции print выведем на экран сообщение о том, что это программа, вычисляющая сумму нечётных чисел на промежутке от a до b, и запрос на ввод a и b. В условии задачи не сказано, что a и b — целые числа, поэтому при считывании будем преобразовывать их в вещественный тип float. Теперь объявим переменную для хранения суммы нечётных чисел – s. Так как мы не учли ещё ни одного числа, присвоим ей значение 0. Теперь мы должны написать цикл для перебора целых чисел на указанном промежутке. Множество значений в заданном диапазоне мы генерируем с помощью функции range, но она принимает на вход целочисленные аргументы, а у нас числа a и b вещественные, поэтому мы должны привести их к целым значениям. Для этого нужно использовать функцию int. Но так как она отбрасывает дробную часть числа, то при переводе числа А мы должны проверить, равна ли его дробная часть нулю. Дробную часть числа можно выделить, вычислив разность его самого и его целой части. Если это условие выполняется, то мы присвоим переменной a значение её целой части. В противном случае, мы можем сократить промежуток, перейдя от a к следующему целому числу, поэтому мы присвоим переменной a значение её целой части, увеличенное на единицу. Для преобразования переменной b нам достаточно взять её целую часть. Так и поступим. Теперь запишем цикл для перебора целых чисел. Это будет цикл для параметра i, изменяющегося в диапазоне от a до b + 1, так как последнее значение не входит в диапазон. В цикле запишем ветвление, определяющее чётность значения i. Если остаток от деления i на 2 равен 1, то мы увеличим значение переменной s на i. Таким образом, по окончании работы цикла переменная s будет содержать значение суммы нечётных чисел на указанном промежутке. С помощью инструкции print выведем на экран сообщение о том, что сумма нечётных чисел на заданном промежутке равна значению переменной s.

print (‘Программа, вычисляющая сумму нечётных чисел на промежутке [a; b]. Введите a и b.’)

a, b = float (input ()),float (input ())

for i in range (a, b + 1):

print (‘Сумма нечётных чисел на заданном промежутке:’, s)

Сохраним написанный модуль и запустим его на выполнение. Зададим промежуток от 1.2 до 7. На этом промежутке нечётные числа: 3, 5 и 7. Их сумма действительно равна 15. Программа работает правильно. Задача решена.

Однако эту же задачу можно решить проще, перебирая в цикле не все числа, а лишь нечётные. Для этого мы должны найти первое нечётное число на промежутке. Для этого перед циклом проверим чётность a с помощью ветвления. Если остаток от деления a на 2 равен 0, то оно является чётным, а нечётным является следующее целое число, поэтому мы увеличим a на 1. Теперь, чтобы в цикле перебирать лишь нечётные числа, так как a – нечётное число, достаточно перебирать значения от a до b + 1 с шагом 2, чтобы пропускать чётные числа. Теперь в цикле нам не нужно проверять чётность числа. Нам достаточно просто на каждом шаге увеличивать значение s на i. Таким образом, вместо проверки на каждом шаге цикла мы делаем всего одну проверку до начала цикла.

print (‘Программа, вычисляющая сумму нечётных чисел на промежутке [a; b]. Введите a и b.’)

a, b = float (input ()),float (input ())

for i in range (a, b + 1, 2):

print (‘Сумма нечётных чисел на заданном промежутке:’, s)

Проверим, верно ли работает модуль. Сохраним и запустим его на выполнение. Зададим промежуток от 4 до 10. На этом промежутке нечётные числа: 5, 7 и 9. Их сумма действительно равна 21. Программа работает правильно.

· В цикле с параметром параметр принимает все значения из заданного множества и для каждого значения выполняется тело цикла.

· Роль множества значений могут выполнять значения, перечисленные в скобках, списки и диапазон значений с заданным шагом.

· Функция range генерирует множество значений в заданном диапазоне с указанным шагом.Она принимает на вход от 1 до 3 целочисленных параметров.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *