Задача с типом цикла до

Задача с типом цикла до thumbnail

Иногда необходимо повторять одно и то же действие несколько раз подряд. Для этого используют циклы. В этом уроке мы научимся программировать циклы на C++, после чего посчитаем сумму всех чисел от 1 до 1000.

Цикл for

Если мы знаем точное количество действий (итераций) цикла, то можем использовать цикл for. Синтаксис его выглядит примерно так:

for (действие до начала цикла; условие продолжения цикла; действия в конце каждой итерации цикла) { инструкция цикла; инструкция цикла 2; инструкция цикла N; }

Итерацией цикла называется один проход этого цикла

Существует частный случай этой записи, который мы сегодня и разберем:

for (счетчик = значение; счетчик < значение; шаг цикла) { тело цикла; }

Счетчик цикла – это переменная, в которой хранится количество проходов данного цикла.

Описание синтаксиса

  1. Сначала присваивается первоначальное значение счетчику, после чего ставится точка с запятой.

  2. Затем задается конечное значение счетчика цикла. После того, как значение счетчика достигнет указанного предела, цикл завершится. Снова ставим точку с запятой.

  3. Задаем шаг цикла. Шаг цикла – это значение, на которое будет увеличиваться или уменьшаться счетчик цикла при каждом проходе.

Пример кода

Напишем программу, которая будет считать сумму всех чисел от 1 до 1000.

#include <iostream> using namespace std; int main() { int i; // счетчик цикла int sum = 0; // сумма чисел от 1 до 1000. setlocale(0, “”); for (i = 1; i <= 1000; i++) // задаем начальное значение 1, конечное 1000 и задаем шаг цикла – 1. { sum = sum + i; } cout << “Сумма чисел от 1 до 1000 = ” << sum << endl; return 0; }

Если мы скомпилируем этот код и запустим программу, то она покажет нам ответ: 500500. Это и есть сумма всех целых чисел от 1 до 1000. Если считать это вручную, понадобится очень много времени и сил. Цикл выполнил всю рутинную работу за нас.

Заметьте, что конечное значение счетчика я задал нестрогим неравенством ( <= – меньше либо равно), поскольку, если бы я поставил знак меньше, то цикл произвел бы 999 итераций, т.е. на одну меньше, чем требуется. Это довольно важный момент, т.к. здесь новички часто допускают ошибки, особенно при работе с массивами (о них будет рассказано в следующем уроке). Значение шага цикла я задал равное единице. i++ – это тоже самое, что и i = i + 1.

В теле цикла, при каждом проходе программа увеличивает значение переменной sum на i. Еще один очень важный момент – в начале программы я присвоил переменной sum значение нуля. Если бы я этого не сделал, программа вылетела вы в сегфолт. При объявлении переменной без ее инициализации что эта переменная будет хранить «мусор».

Естественно к мусору мы ничего прибавить не можем. Некоторые компиляторы, такие как gcc, инициализирует переменную нулем при ее объявлении.

Цикл while

Когда мы не знаем, сколько итераций должен произвести цикл, нам понадобится цикл while или do…while. Синтаксис цикла while в C++ выглядит следующим образом.

while (Условие) { Тело цикла; }

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

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

#include <iostream> using namespace std; int main() { setlocale(0, “”); int i = 0; // инициализируем счетчик цикла. int sum = 0; // инициализируем счетчик суммы. while (i < 1000) { i++; sum += i; } cout << “Сумма чисел от 1 до 1000 = ” << sum << endl; return 0; }

После компиляции программа выдаст результат, аналогичный результату работы предыдущей программы. Но поясним несколько важных моментов. Я задал строгое неравенство в условии цикла и инициализировал счетчик i нулем, так как в цикле while происходит на одну итерацию больше, потому он будет выполняться, до тех пор, пока значение счетчика перестает удовлетворять условию, но данная итерация все равно выполнится. Если бы мы поставили нестрогое неравенство, то цикл бы закончился, когда переменная i стала бы равна 1001 и выполнилось бы на одну итерацию больше.

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

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

Затем мы описываем условие цикла – «пока переменная i меньше 1000 – выполняй цикл». При каждой итерации цикла значение переменной-счетчика i увеличивается на единицу внутри цикла.

Читайте также:  Лирический цикл предчувствую тебя

Когда выполнится 1000 итераций цикла, счетчик станет равным 999 и следующая итерация уже не выполнится, поскольку 1000 не меньше 1000. Выражение sum += i является укороченной записью sum = sum + i.

После окончания выполнения цикла, выводим сообщение с ответом.

Цикл do while

Цикл do while очень похож на цикл while. Единственное их различие в том, что при выполнении цикла do while один проход цикла будет выполнен независимо от условия. Решение задачи на поиск суммы чисел от 1 до 1000, с применением цикла do while.

#include <iostream> using namespace std; int main () { setlocale(0, “”); int i = 0; // инициализируем счетчик цикла. int sum = 0; // инициализируем счетчик суммы. do {// выполняем цикл. i++; sum += i; } while (i < 1000); // пока выполняется условие. cout << “Сумма чисел от 1 до 1000 = ” << sum << endl; return 0; }

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

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

Следующий урок – Массивы в C++ →.

Источник

Цели урока:

  1. Рассмотреть решение задачи с использованием различных видов циклов.
  2. Сформировать умение решать задачи с использованием циклов.
  3. Способствовать развитию таких мыслительных операций, как анализ, синтез, обобщение.
  4. Развитие познавательного интереса.

План урока:

  1. Постановка цели урока.
  2. Актуализация знаний и умений учащихся.
  3. решение задач.
  4. Домашняя работа.
  5. Подведение итогов урока.

Ход урока

I. Постановка цели урока.

Освоив, операторы присваивания и научившись пользоваться условным оператором IF, теоретически можно написать любую программу. Но в нашей повседневной жизни мы очень часто встречаемся с процессами, которые повторяются во времени несколько раз. Например: прорастание растения из семечки, смена времён года, смена времени суток, покраска забора, укладка кирпича и т.д. Гораздо удобнее в этих случаях использовать циклы. Циклы позволяют существенно упростить алгоритм и текст программы, сделать программу изящной, гибкой, более привлекательной. Сегодня на уроке мы будем решать такие задачи и убедимся в этом сами.

II. Актуализация знаний и умений учащихся.

Но прежде чем мы перейдём к решению задач, давайте вспомним с вами, какие циклы вы знаете?

В чём отличительная черта цикла While?

В чём отличительная черта цикла Repeat?

В чём отличительная черта цикла с параметром?

Ответы учащихся сопровождаются демонстрацией слайдов №№ 2-8 презентации к уроку см. Приложение.

III. Решение задач.

Задача:

Гражданин 1 марта открыл счёт в банке, вложив 1000 рублей. Через каждый месяц размер вклада увеличивается на 2% от имеющейся суммы. Определить:

Сумму вклада через один, два, …, двенадцать месяцев.

Текст задачи выводится на экран слайд презентации № 9.

1. Анализ условия:

  • Что нам известно?
  • Что надо найти?
  • Сколько переменных используется в задаче?
  • Какие переменные мы будем вводить, а какие рассчитывать?
  • К какому типу относятся переменные вводимые с клавиатуры?
  • Если эти переменные относятся к вещественному типу, то какой результат мы получим?
  • Как мы обозначим переменные?

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

Слайд презентации № 10.

2. Построение математической модели решения:

Первоначальный вклад а0=1000

1 месяц: а1=а0+а0*0,02

2 месяц: а2=а1+а1*0,02

—————————-

10 месяц: а10=а9+а9*0,02

Общий случай: an=an-1+an-1*0,02

Слайд презентации № 11.

3. Составление алгоритма решения:

Слайд презентации № 12.

4. Запись программы:

Program vklad;

Var i: integer;

a: real;

Begin Writeln (‘введите значение первоначального вклада’);

Readln (а);

For i:=1 to 12 do

begin a:= a + a*0,02;

writeln (a); end;

end.

Слайд презентации № 13.

А теперь запишите данную программу с помощью цикла ДО или цикла ПОКА кому как удобнее.

Цикл до:

Program vklad;/

Var i: integer;

a: real;

Begin Writeln (‘введите значение первоначального вклада’);

Readln (а);

i:=1;

repeat

a:= a+a*0,02;

writeln (a);

i:=i+1;

until i>12;

end.

Цикл пока:

Program vklad;

Var i: integer;

a: real;

Begin Writeln (‘введите значение первоначального вклада’);

Readln (а);

i:=1;

while i<=12 do

begin a:= a+a*0,02;

writeln (a);

i:=i+1; end;

end.

Слайд презентации № 14.

IV. Домашняя работа.

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

Одноклеточная амёба каждые 3 часа делится на 2 клетки. Определить, сколько будет клеток через 3, 6, 9, …, 24 часа.

Слайд презентации № 15.

Источник

При изучении данной темы формируются навыки использования алгоритма цикла “До”, использование блок-схем для решения поставленных задач, операторов цикла в языке программирования TPascal. Урок является первым уроком при изучении темы “Циклы”.

Читайте также:  Расход топлива в комбинированном цикле это

К моменту проведения урока учащиеся 4 год изучают информатику (1 урок в неделю). Умеют рисовать блок-схемы, знают основные операторы языка программирования, умеют сопоставлять блок-схемы с программой, знают типы данных, умеют описывать переменные, знают разделы программы в языке программирования.

Цели урока:

с точки зрения деятельности учителя:

  • помочь учащимся в создании компьютерной модели поставленных задач;
  • научить учащихся записывать алгоритм цикла “До” с помощью блок-схем, записывать алгоритм с помощью языка программирования TPascal;
  • решать простейшие задачи на использование алгоритмов цикла “До”
  • увлечь учащихся созданием и отладкой программ на языке программирования;

с точки зрения содержания материала:

  • ввести понятие алгоритма цикла “ДО”;
  • ввести понятие о операторах цикла “ДО”;
  • ввести понятие о теле цикла;
  • ввести понятие о счетчике цикла;
  • прорешать задачи на использования алгоритма цикла “До” с помощью блок-схем и языка программирования TPascal;

с точки зрения внутреннего изменения учащихся:

  • учащиеся учатся умению правильно подбирать условия для цикла;
  • учатся умению предвидеть результат выполнения алгоритма;
  • учатся умению писать программы по блок-схеме алгоритма цикла “ДО”
  • учатся проводить аналогии при решении задач

с точки зрения внешне выраженной деятельности учащихся:

  • учащиеся должны понять и запомнить формат операторов цикла “ДО”;
  • решать задачи на использование алгоритма цикла “ДО”;
  • продолжить формирование умений находить ошибки в программах

Задачи урока:

  • сформировать у учащихся навыки решения задач на составление алгоритма цикла “ДО” с использованием блок-схем;
  • сформировать у учащихся навыки сопоставления блок-схемы и программы, навыков написания программы по блок-схеме;
  • закрепить у учащихся навыков набора и отладки программ, навыков нахождения и исправления ошибок в программе;

Тип урока: урок изучения нового материала.

Год обучения: четвертый.

Возраст учащихся: 9-й класс.

Программное обеспечение: язык программирования Turbo Pascal 7.0, NetMeting, Power Point, HyperTest

Дидактический материал: карточки с задачами, карточки с условиями, компьютерный тест, графический диктант.

Наглядное пособие: презентация Power Point “Цикл “ДО”.

Реализация поставленных задач:

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

Компьютерное тестирование проходят часть учащихся. Результаты тестов записывают в “Таблицах оценок” (Приложение). Оценки “3”, “4”, “5” заносятся как положительные, оценка “2”, как 2 балла.

Остальная часть – учащиеся выполняют графический диктант. Осуществляется взаимопроверка по шаблону (т.е. обмениваются работами с соседом, и проверяют работы выставляют оценки согласно следующей схеме: оценка “5” – если допущено 0-1 ошибки, “4”- если допущено 2-3 ошибки, “3” – если допущено 4-5 ошибок, “2”- если более 5 ошибок. Оценки 3-5 вносятся в таблицу оценок как положительные, оценки 2 как 2.

Изучение нового материала сопровождается презентацией “Цикл “ДО”, управление презентацией происходит с центрального компьютера, с помощью программы NetMeting транслируется на остальные компьютера учебного класса. Учащиеся имеют возможность наблюдать за ходом изложения материала.

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

Закрепление материал происходит при решении задач.

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

ХОД УРОКА

I. Постановка задачи

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

II. Проверка домашнего задания

Шестеро учащихся (наиболее сильных) проходят тестирование на компьютерах, остальные учащиеся выполняют графический диктант. Учитель читает высказывания, определения и если высказывание истинно, то учащиеся рисуют прочерк “__”, если же высказывания ложно, то изображают домик “/”. В конце работы учащиеся обмениваются листочками с товарищами, проверяют работы по шаблону, на доске, затем выставляют оценки, оценки заносятся в “Таблицы оценок”. Происходит взаимопроверка и взаимооценка работ. Учащиеся, проходящие тестирование на компьютерах, по окончании тестирования тоже выставляют оценки в свои “Таблицы оценок”. Если тест пройден с ошибками, то просматривают правильные ответы, что способствует коррекции знаний.

III. Устный опрос

Проводится для повторения определений, операторов и блок-схем.

Вопросы:

  • Что такое алгоритм ветвления?
  • Что такое условие?
  • Операторы алгоритма ветвления в TPascal?
  • Что такое неполная форма алгоритма ветвления?
  • Чем отличаются операторы неполного ветвления от операторов ветвления?
  • Чем отличаются блок-схемы неполного ветвления от полного ветвления?
  • Определить истинность условия(задания на отдельных карточках):

Если А = 10, В = 7

а) А > B

b) B = A

c) A <> B

d) A = 10

За каждый правильный ответ учащиеся ставят себе по одному баллу в “Таблицу оценок”, за каждый неправильный ответ ставят – 1 балл.

Читайте также:  Контрольная работа по циклу 7 6 класс ответы

IV. Изучение нового материала

Учитель: Ребята, давайте рассмотрим следующий случай. Какие действия нужно произвести, когда необходимо забить гвоздь молотком.

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

Учитель: Итак, мы сделали вывод, что необходимо повторять одно и тоже действие несколько раз.

Алгоритм, в котором одно и тоже действие (команды) повторяется многократно, называют алгоритмом цикла.

На экраны мониторов выводится слайд презентации, содержащий определение. Определение записывается в тетради.

Учитель: Существуют 3 разновидности циклов. На экран монитора выводися слайд, содержащий следующие название циклов:

  • Цикл “До”,
  • Цикл “Пока”,
  • Цикл “Для”.

Мы с вами сегодня рассмотрим цикл “До”. Цикл “До”(с постусловием) – это цикл, в котором условие проверяется в конце цикла.

Примерная блок-схема цикла “До” (выводится слайд, содержащий примерную блок-схему):

Задача с типом цикла до

Начало цикла “До” – Repeat

Тело цикла – команды находящиеся внутри цикла

Конец цикла – Until <условие>;

Учитель: Ребята, посмотрите на блок-схему и попробуйте определить, до каких пор будут повторятся команды в этом цикле.

Учащиеся приходят к выводу, что команды будут выполняться, пока условие не станет истинным.

Учитель: Сформулируйте, пожалуйста, определение.

Тело цикла “До” выполняется, пока условие не станет истинным.

Если не получается сформулировать, то учитель подводит учащихся к выводу.

Учитель: Запишите в тетрадях определение: Особенностью цикла “До” является то, что тело цикла выполняется хотя бы один раз.

Подумайте, при каком случае тело цикла выполняется только 1 раз?

Учащиеся должны прийти к выводу, что в случае если условие уже при первом повторе является истинным, то тело цикла выполняется только 1 раз. Если не приходят к этому выводу, то учитель подводит их к этому выводу с помощью наводящих вопросов.

Учитель: А почему в определении говорится, что тело цикла выполняется хотя бы один раз, а может ли быть такой случай, что тело цикла может не выполнится ни разу?

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

Учитель: Рассмотрим представление цикла “До” с помощью операторов в языке программирования TPascal 7.0. Обратите внимание на слайд. Начало цикла в языке программирования обозначается оператором – Repeat, конец цикла оператором Until, за которым пишется условие. Обратите внимание: после оператора repeat точка запятая не ставится.

Учащиеся записывают операторы в тетрадях.

Учитель: Итак, что же мы узнали о цикле “ДО”?

Учащиеся проговаривают все то, что они узнали.

V. Закрепление

1. Решение задач на использование цикла “ДО”

– Попробуем решить следующую задачу: необходимо вывести на экран 5 раз сообщение “Здравствуйте!!! Я работаю”.

Совместно с учителем разрабатываются алгоритм для решения данной задачи.

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

Счетчиком цикла для решения поставленной задачи мы возьмем переменную – Т. Первоначально значение счетчика Т = 1. Вывод сообщения будет происходит в теле цикла, нам необходимо вывести 5 сообщений, следовательно тело цикла должно повториться 5 раз, тогда конечное значение счетчика цикла Т = 5. А условием выхода из цикла будет достижение счетчика цикла конечного значения – Т = 5.

На доске рисуется блок-схема.

– Счетчику цикла присваиваем начальное значение начало цикла “До”. Вывод сообщения увеличение значения счетчика проверка условия выхода из цикла.

2. Формальное исполнение (выполняется в специальных таблицах. См. Приложение)

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

3. Работа по написанию программы по данному алгоритму

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

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

VI. Домашнее задание

Выучить определения, операторы цикла “ДО”, решить задачу № 2 по карточке (Приложение).

VII. Подведение итогов урока

Учащиеся выставляют итоговые оценки в “Таблицах оценок”

Источник