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

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

Загрузить презентацию (329,2 кБ)

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

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

Ход урока

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

  • Повторить понятие алгоритма, основные конструкции алгоритмического языка.
  • Уметь разрабатывать математическую модель, алгоритм и блок схему решения задачи.
  • Иметь понятие о языках программирования и их назначении.
  • Уметь работать в среде программирования.
  • Знать структуры программы.
  • Уметь записывать выражения, содержащие числовые и символьные величины.
  • Знать структуры операторов и особенности их работы.
  • Уметь применять операторы при написании программ с линейными и ветвящимися структурами.
  • Уметь на компьютере создавать и запускать программы на отладку.

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

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

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

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

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

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

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

  • Цикл с предусловием;
  • Цикл с послеусловием;
  • Цикл с параметром;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Форматы записи операторов алгоритма Блок-схема Форматы записи операторов на Паскале
Для i от а до b шаг h
делай
Нц
Серия команд
кц
h = +1
for
i:= a to b do
begin
серия команд
end;
h = -1

for i:= b downto a do
begin
Cерия команд;
end;

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

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

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

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

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

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

Пример.

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

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

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

Тема 3. Ветвящиеся алгоритмы (оператор выбора)

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

Оператор case состоит состоит из селектора (переменной целого, символьного или логического типа) и списка операторов, каждому из которых предшествует список вариантов, представляющий собой значение того же типа, что и селектор. Значения, входящие в список вариантов, разделяются запятыми, а диапазоны значений задаются с использованием "..". При работе оператора case будет выполнен тот входящий в него оператор, в чьём списке вариантов окажется текущее значение селектора. Если ни один из списков вариантов не содержит значения селектора, то выполняется оператор, стоящий за словом else (альтернативный оператор), если ветвь else отсутствует, то ничего не выполняется. После ":" допустимо выполнение только одного оператора, поэтому для выполнения нескольких операторов необходимо использовать составной оператор. Оператор выбора закрывается end. Входить внутрь оператора выбора по какому-либо оператору перехода goto, находящемуся вне оператора варианта, нельзя. Выполнение оператора варианта сводится к выполнению только одного из входящих в его состав операторов, поэтому переходить с одного из них на другой с помощью оператора перехода goto запрещается.

Пример 3.1п. Оператор выбора. Часть I.

В зависимости от остатка от деления N (целое число) на 8 выполнить следующее: если остаток равен 0, то значению N надо присвоить ноль; если остаток равен 1 или от 3 до 5, то N заменить противоположным значением; если остаток равен 2 или 6, то N – удвоить; если остаток равен 7, то значение оставить без изменений.

Сначала определимся, какие переменные понадобятся при написании программы. Понадобиться только одна переменная N, которая будет целого типа, а ее значение будет задаваться с клавиатуры. В качестве селектора в операторе выбора будет выражение, вычисляющее остаток от деления на 8. Для вычисления остатка от деления будет использоваться функция mod. В итоге получаем следующую программу.

Читайте также:  Сумма чисел фибоначчи до 1000

case N mod 8 of

Тема 4. Циклические алгоритмы (операторы цикла)

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

оператор цикла с предусловием;

оператор цикла с постусловием;

арифметический оператор цикла (оператор цикла с параметром).

Рассмотрим их по порядку.

Оператор цикла с предусловием

Общий вид оператора цикла с предусловием на ЯП Паскаль следующий:

Выполнение оператора начинается с вычисления значения логического выражения. Если оно имеет значение true (истина), то выполняется оператор, стоящий после do. Выполнение цикла продолжается до тех пор, пока логическое выражение не примет значение false (ложь). Если выражение равно false на первом же витке цикла, то работа цикла завершится, а входящие в него операторы не выполнятся ни разу. Поскольку в цикле типа while-do условие его работы проверяется до выполнения входящего в него оператора, такой цикл называется "оператор цикла с предусловием". Схематично работу оператора цикла с предусловием можно представить следующим образом.

Оператор цикла с постусловием

Запись оператора цикла с постусловием имеет вид:

Оператор цикла с постусловием начинается с выполнения списка операторов внутри цикла (начиная с оператора, идущего после repeat, и заканчивая оператором, стоящим перед until). Затем проверяется истинность логического выражения, стоящего после слова until. Если это условие принимает значение true (истина), то осуществляется выход из цикла. Если же значение логического выражения false (ложь), то выполнение операторов "тела" цикла повторяется, после чего снова проверяется истинность логического условия. Схематично работу оператора цикла с постусловием можно представить следующим образом.

Арифметический оператор цикла

Запись арифметического оператора цикла на ЯП Паскаль имеет вид:

Где – параметр цикла (счетчик повторов), является переменной порядкового типа (целого, символьного), меняется в пределах от до ( – начальное значение, – конечное значение) с шагом единица. Оператор – любой простой или составной оператор, который необходимо повторить несколько раз. Выполнение оператора происходит для каждого значение параметра цикла. Тип начального и конечного значений должен соответствовать типу счетчика.

Существует другой вид оператора цикла с параметром:

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

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

нельзя задавать шаг изменения значения параметра, отличный от 1 или -1;

не рекомендуется изменять внутри цикла значения параметра цикла, его начальное и конечное значения(может произойти зацикливание);

Особенности использования циклов

Арифметический цикл (for-to-do) обычно используется в тех случаях, когда заранее известно, сколько раз должно быть выполнено "тело" цикла, иначе рекомендуется использовать оператор цикла с постусловием (repeat-until) или предусловием (while-do).

Цикл с постусловием (repeat-until) используется, если необходимо, чтобы тело цикла выполнялось, по крайней мере, один раз.

Цикл с предусловием (while-do) используется, когда требуется, чтобы проверка производилась прежде, чем выполнится тело цикла.

Согласно формальным правилам ЯП Паскаль, в цикле с параметром (for-to-do) и с предусловием (while-do) после do выполняется только один оператор. Если требуется, чтобы выполнялось множество операторов, то тогда необходимо использовать составной оператор (begin-end), объединяя, тем самым, это множество в один оператор. В цикле с постусловием (repeat-until) операторные скобки не требуются.

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

Оператор цикла for

Очень часто в программах надо выполнить определенные операторы несколько раз. Нелогично записывать эту последовательность действий двадцать или пятьдесят раз подряд. В этих случаях организуют циклические вычисления. Алгоритм называется циклическим, если определенная последовательность шагов выполняется несколько раз в зависимости от заданной величины, которая называется параметром цикла. Цикл заканчивается, когда параметр принимает определенное значение. Для организации циклов с известным количеством повторений в языке Python используется оператор for. Его общий вид в алгоритме представлен на рис. 39.

Отметим, что оператор цикла for в языке Python может иметь разные формы записи. Рассмотрим синтаксис первой из них. Назовем ее «цикл по возрастающим значениям параметра». Обратите внимание на отступы, которые необходимо делать, если мы хотим, чтобы операторы Pi. Pn выполнялись внутри цикла.

for i in range (Ni, N2, step):

где for (для) – служебное слово; i – имя переменной, в которой сохраняются значения элементов; Pi. Pn – операторы; in – в; range – встроенная функция языка Python; step – шаг, является необязательным параметром.

Отметим, что аргументами функции range могут быть только целые числа. Работа оператора цикла for в такой конструкции заключается в следующем. При первом вхождении в цикл параметр цикла i принимает значение, равное величине нижней границы Nb и выполняется оператор или операторы в теле цикла. Затем значение параметра увеличивается на величину step, и вновь выполняется тело цикла. Подобные действия будут повторяться до тех пор, пока значение параметра цикла не станет равным величине N2-l, после чего осуществляется выход из цикла. Если аргумент step пропущен в функции range, то шаг изменения параметра цикла будет равен единице.

Задача. Найдите сумму целых чисел от 1 до 50. Разработка алгоритма решения задачи представлена на рис. 40.

Рис. 40. Алгоритм решения задачи

При первом вхождении цикл параметр цикла примет значение, равное единице, и выполнится оператор 8иіп=8шп+і. Затем параметр і будет последовательно увеличиваться на величину шага, который равен единице, и всякий раз в цикле будет выполняться оператор 8иш=8ит+і. Следует отметить, что конечное значение верхней границы 51 достигнуто не будет. Счетчик, как иногда называют параметр цикла, остановится на предыдущем значении, т. е. значении, равном 50. В листинге 16 приведен код программы, отвечающий за решение задачи.

for i in range (1,51, 1): sum=sum+i

Если учесть, что параметр step является необязательным, то заголовок цикла можно переписать иначе (листинг 17).

for i in range (1, 51): sum=sum+i

Попробуем написать ту же программу, но с циклом по убывающему значению параметра. Будем считать ее второй формой записи оператора цикла for. Последний аргумент в функции range теперь равен минус единице. Соответственно, параметр цикла i будет изменяться от 50 до 1, значение 0 в перебор включено не будет.

Читайте также:  Сравнение qx60 и jx35

for i in range (50, 0, -1): sum=sum+i

Третья форма записи оператора цикла for может быть организована с использованием функции range и одним параметром, указывающим значение верхней границы. Таким образом, параметр цикла будет меняться от 0 до значения N2-1. Синтаксис оператора в общем виде можно записать следующим образом.

for i in range (N2):

Программу «Найти сумму целых чисел от 1 до 50» теперь можно написать, как следующую последовательность операторов.

for i in range (51): sum=sum+i

Отметим, что результатом выполнения всех рассмотренных программ является число 1275.

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

sloVO=input("BBeflHTe слово ") for i in slovo:

Как видно из листинга 20, в цикле происходит перебор символов того слова (строки), которое вводит пользователь с клавиатуры. Результат работы программы представлен на рис. 41. В операторе print, в отличие от выше рассмотренных примеров, используется небольшое дополнение, а именно, оператор end=" ”, что позволило расположить результаты работы программы в строке, а не в столбик, как было сделано ранее.

Рис. 41. Результат работы программы

Сложный циклический процесс. Вложенные циклы

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

Рис. 42. Общий вид в алгоритме сложного циклического процесса

Синтаксис операторов сложного цикла представлен ниже. Обратите внимание на отступы, выполненные для внутреннего цикла и операторов Рь . Рп, которые в нем будут выполняться.

for i in range(Ni, N2): #внешний цикл

for j in range(Mi, М2): #внутренний цикл

Рассмотрим работу сложного циклического процесса. При первом вхождении в цикл параметр внешнего цикла i принимает значение равное Nj. Управление передается во внутренний цикл, в котором параметр цикла j принимает значение, равное Mi, и выполняется оператор (операторы), который записан во внутреннем цикле. Затем параметр внутреннего цикла j увеличивается на единицу (если опущен аргумент step в функции range), и вновь выполняется тело цикла. Затем параметр внешнего цикла i увеличивается на единицу, и вновь начинает свою работу внутренний цикл, в котором параметр цикла j будет изменяться от Mi до М2, и при каждом прохождении цикла будут выполняться операторы Рь

Задача. Разработайте приложение, которое осуществляет вывод на экран таблицы умножения для значений от 1 до 5.

for і in range(l,6):

for j in range(l,6):

print(i, j, i*j, end=’ ‘)

Итак, согласно алгоритму работы сложного циклического процесса установим границы изменения параметра во внутреннем и внешнем циклах от 1 до 6. Во внутреннем цикле выполнится оператор print(i, j, i*j, end=’ ‘), в котором сочетается вывод самих значений параметров, строковых выражений для вывода знаков умножения и равенства на экран и, собственно, самого действия i*j, которое обеспечит перемножение параметров. «Пустой» оператор print() (обратите внимание на отступ) не выполняется во внутреннем цикле, а служит для пропуска строки между выводом столбцов ответа. Результат работы программы представлен на рис. 43.

Рис. 43. Вывод таблицы умножения

Вопрос 1. Сколько раз будет выполнен оператор d=5 в теле цикла?

for i in range(d+l,r,l):

Ответ. Подставив значения переменных d и г, получаем, что параметр цикла i меняется от 5 до 14. При первом вхождении в цикл параметр цикла примет значение 5, а далее будет автоматически увеличиваться на +1, пока не достигнет величины верхней границы 14. Следовательно, оператор выполнится 10 раз.

Вопрос 2. Определите, какое значение будет в ячейке г после выполнения группы операторов?

for i in range(5,0,-l):

Ответ. При первом вхождении в цикл параметр цикла примет значение 5. В программе используется цикл по убывающим значениям, следовательно, параметр цикла при каждом выполнении тела цикла будет уменьшаться на -1. При первом вхождении в цикл переменная s принимает значение, равное 1. Выполняется оператор r=r-s. После его выполнения в ячейке г будет значение 49. Затем параметр цикла уменьшается на единицу и будет равен четырем. Вновь выполняются операторы s=l и r= r-s. Выполняя их каждый раз и подсчитывая полученные значения, получим в ячейке г значение 45.

Вопрос 3. Определите, какое значение находится в ячейке у после выполнения группы операторов?

for i in range( 1,4,1): y=d y=a+2

Ответ. В цикле с оператором for параметр цикла будет меняться от 1 до 3. В цикле выполняются два оператора: y=d и у=а+2. Операторы выполняются три раза. Каждый раз при прохождении цикла в ячейке у будет находиться значение 5 (y=d), а после выполнения оператора у=а+2 значение ячейки у будет равно 9. Следовательно, после выполнения группы операторов в ячейке у будет находиться значение 9.

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

for i in range(3): print("i = ”,i) if a!=d: a=a+l else: y=a

Ответ. В цикле с оператором for происходит проверка логического выражения a!=d. Поскольку значения and равны после выполнения операторов а=17.0 и d=a, логическое выражение все время будет оставаться ложным, а следовательно, выполнение оператора у=а в ветви else гарантировано при каждом прохождении цикла. Таким образом, с помощью оператора print на экран будет выведено значение 17.0. Параметр цикла i, согласно теории, рассмотренной выше, будет принимать последовательные значения от 0 до 2.

Вопрос 5. Определите, какое значение находится в ячейке у после выполнения группы операторов?

for i in range(2,6,l):

Ответ. При первом вхождении в цикл параметр цикла примет значение нижней границы, равное двум. В цикле будут выполняться два оператора, таким образом, в ячейке а оказывается значение 11, а после выполнения оператора у=а+10 значение, находящееся в ячейке у, станет равным 21. Параметр увеличивается на единицу и будет равен трем, выполняется оператор а=а+10, и в ячейке а оказывается число 21, а в ячейке у находится число 31. Выполнив подобные действия еще два раза, получим в ячейке у значение, равное 51.

Вопрос 6. Определите, какое значение находится в ячейке у после выполнения группы операторов?

for i in range(7,l,-l):

Ответ. При первом вхождении в цикл параметр цикла примет значение, равное 7. В ячейке а оказывается значение, равное 5, а в ячейке у после выполнения оператора у=а+10 будет значение, равное 15. В цикле по убывающим значениям параметра значение ячейки i уменьшится на единицу и будет равно 6. Выполняется оператор a=d, и в ячейке а снова оказывается число 5. В ячейке у после выполнения оператора у=а+10 будет значение 15. Эти действия будут повторяться до тех пор, пока параметр цикла не достигнет значения границы, равного 2. Происходит выход из цикла. В ячейке у находится значение, равное 15.

Читайте также:  Турки это арабы или кто

Вопрос 7. Определите, какое значение находится в ячейке у после выполнения цикла с оператором for?

for і in range(2,6,l): y=d+10 y=a+10 y=a*d

Ответ. В данном фрагменте программы при выполнении цикла смещен вправо только один оператор y=d+10. Следовательно, он и будет выполняться. При первом прохождении цикла в ячейке у оказывается значение, равное 15. Параметр цикла увеличивается на единицу. Вновь выполняется оператор y=d+10, и так как значение ячейки d не изменялось, оно вновь оказывается равным 15. Эти действия будут повторяться до тех пор, пока параметр не достигнет значения верхней границы, равной 5. Происходит выход из цикла, и в ячейке у находится значение, равное 15. Поставив вопрос к данному упражнению по-другому: «Какое значение находится в ячейке у после выполнения фрагмента программы?», -следует проанализировать еще два оператора, где изменяется значение у, и получить значение, равное 25.

Вопрос 8. Сколько раз будет выполнен цикл в следующем фрагменте программы?

for і in range (s+2,n+3,-l):

Ответ. Подставив исходные значения переменных в заголовок цикла, видим, что параметр цикла і в цикле по убывающим значениям будет меняться от 15 до 6, изменяясь при этом с шагом -1. При первом вхождении в цикл параметр цикла примет значение, равное 15, затем он будет равен 14, 13, 12 и т. д., и цикл будет выполняться до тех пор, пока параметр не станет равным шести. Таким образом, цикл выполнится 10 раз.

Примеры решения задач

Задача 1. Последовательно вводятся шесть целых чисел. Определите, каких среди них больше: положительных или отрицательных. Разработка алгоритма решения задачи представлена на рис. 44.

Рис. 44. Алгоритм решения задачи

Комментарий. Ячейки рої и otr играют роль счетчиков. Счетчики в цикле будут увеличиваться на единицу операторами otr=otr+l и pol=pol+l, поэтому для того, чтобы конечный результат не был искажен, ячейки предварительно обнуляются операторами ро1=0 и otr=0.

В листинге 22 приведен код программы, отвечающий за решение задачи.

ро1=0 #Счетчик положительных чисел предварительно обнуляется otr=0 #Счетчик отрицательных чисел предварительно обнуляется

for і in range (6):

chislo = іп!:(іпри1:("Введите число ")) if chislo otr:

ргіп1:("Положительньіх чисел больше") if pol ргіпі("Количество чисел одинаково")_

Рис. 45. Алгоритм решения задачи

Комментарий. Для реализации алгоритма поиска минимального числа мы отводим ячейку min, в которую предварительно заносим любое большое значение, например, в данной программе +32767, оператором min=32767. В цикле введенное пользователем число сравнивается с хранящимся в ячейке min, и если оно меньше, то введенное число заносится в ячейку min оператором min=chislo. Таким образом, к моменту завершения цикла в ячейке min будет находиться минимальный элемент.

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

В листинге 23 приведен код программы, отвечающий за решение задачи.

for i in range (5):

chislo = float(input("BBeflHTe число "))

if chislo>0: #Проверка на положительность очередного введенного числа

if chislo ргш max: #Поиск максимального элемента max=chislo

рпп ргт 1 ("Минимальное из отрицательных чисел: ",min)

Рис. 48. Алгоритм решения задачи

В листинге 26 приведен код программы, отвечающий за решение задачи.

kolpol=kolpol+l if chislo>max: max=chislo if kolpol==0:

print("HeT положительных чисел") else:

ргт!("Количество положительных чисел =", kolpol) рпп 1 :("Максимальное из них =", шах)_

Рис. 49. Алгоритм решения задачи

Комментарий. Поиск среднего арифметического положительных значений заключается в нахождении суммы чисел (ячейка sum), нахождении их количества (ячейка kolpol) и вычислении среднего арифметического по формуле srarifm=sum/kolpol. В листинге 27 приведен код программы, отвечающий за решение задачи.

kolpol – О sum = О

for i in range(l,6,l):

kolpol=kolpol+l sum=sum+chislo if kolpol==0:

print("HeT положительных чисел")

ргт!("Среднее арифметическое положительных чисел =", srarifm) рпп 1 :("Количество положительных чисел =", kolpol)_

Задача 7. Вводится последовательность из N целых чисел. Найдите, сколько в ней чисел, равных числу 100, а также количество отрицательных чисел. Разработка алгоритма решения задачи представлена на рис. 50.

Рис. 50. Алгоритм решения задачи

В листинге 28 приведен код программы, отвечающий за решение задачи.

n=int(input("BBeflHTe количество чисел"))

for i in range (n):

chislo=int(input("BBeflHTe число: "))_

№ сЫ81о==100: к=к+1 Н сЫб1о чисел: ", ко!о 1 г)_

Задача 8. Последовательно вводится десять вещественных чисел. Определите, сколько из них совпадают с первым числом. Разработка алгоритма решения задачи представлена на рис. 51.

Рис. 51. Алгоритм решения задачи

Комментарий. В ячейку сішіоі заносим первое число. Все последующие введенные числа, начиная со второго, будем сравнивать в цикле с тем числом, которое находится в ячейке сішіоі. В случае совпадения будем увеличивать значение ячейки ко1, которая играет роль счетчика, на единицу. В листинге 29 приведен код программы, отвечающий за решение задачи.

сЬІ8Іо1=Яоа1(іпри1("Введите первое число: ")) ко 1=0

for i in range (2,11):

сЫ81о=Яоа print("C первым числом совпало ", kol)_

Задача 9. Последовательно вводится десять целых чисел. Найдите разность между максимальным и минимальным из них. Разработка алгоритма решения задачи представлена на рис. 52.

Рис. 52. Алгоритм решения задачи

Комментарий. В задаче реализуются алгоритмы поиска минимального и максимального элемента, описанные выше. По окончании цикла в ячейке maxim будет находиться максимальный элемент, а в ячейке minim – минимальный элемент. Оператором raznost=maxim-minim находится разность чисел. В листинге 30 приведен код программы, отвечающий за решение задачи.

сЫ81о=т1:(три тах1т: тах1т=сЫ81о if сЬЫоСгттт: пйтпгеЬЫо га2П081=тах1т-1ттт

ргт1:("Разность между максимальным и минимальным числом = ", гаг- по 81 :)_

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

Рис. 53. Алгоритм решения задачи

В листинге 31 приведен код программы, отвечающий за решение задачи.

for i in range(lO):

chislo=int(input("BBenHTe число ")) if chislo>0:

рпп 1 ("Произведение положительных и отрицательных чисел = ",proiz)

Оцените статью
Добавить комментарий

Adblock detector