Вложенные циклы: 23. Вложенные циклы – Вложенные циклы в C++ | PureCodeCpp

7.11. Что такое вложенные циклы?

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

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

Вычислить сумму элементов заданной матрицы А(5,3).

Матрица А
 
нц для i от 1 до 5
  нц для
j от 1 до 3
    S:=S+A[i,j]
  кц
кц


Пример вложенных циклов пока

Вычислить произведение тех элементов заданной матрицы A(10,10), которые расположены на пересечении четных строк и четных столбцов.

i:=2; P:=1
нц пока i <= 10
  j:=2
  нц пока j <= 10
    P:=P*A[i,j]
    j:=j+2
  кц
  i:=i+2
кц

Вопрос 15

Табулирование функций. Разработка алгоритмов со структурой вложенных циклов.

Табулирование функции — это вычисление значенй функции при изменении аргумента от некоторого начального значения до некоторого конечного значения с определенным шагом. Именно так составляются таблицы значений функций, отсюда и название — табулирование. Необходимость в табулировании возникает при решении достаточно широкого круга задач. Например, при численном решении нелинейных уравнений  f(x) = 0, путем табулирования можно отделить (локализовать) корни уравнения, т.е. найти такие отрезки, на концах которых, функция имеет разные знаки. С помощью табулирования можно, хотя и очень грубо, найти минимум или максимум функции. Иногда случается так, что функция не имеет аналитического представления, а ее значения получаются в результате вычислений, что часто бывает при компьютерном моделировании различных процессов. Если такая функция будет использоваться в последующих расчетах (например, она должна быть проинтегрирована или продифференцирована и т.п.), то часто поступают следующим образом: вычисляют значения функции в нужном интервале изменения аргумента, т.е. составляют таблицу (табулируют), а затем по этой таблице строят каким-либо образом другую функцию, заданную аналитическим выражением (формулой). Необходимость в табулировании возникает также при построении графиков функции на экране компьютера. И т.д. и т.п.

Итак, пусть необходимо протабулировать функцию y(x)=exp(-x2) на интервале [-2, 2] с шагом 0.1. Поскольку программа должна многократно вычислять значения функции (одной и той же), то разумно составить циклический алгоритм. Для организации цикла можно использовать любой из циклических операторов (WHILE, REPEAT..UNTIL или FOR). В данной постановке задачи наиболее удобны два первых оператора, поскольку для оператора FOR необходимо еще предварительно вычислить количество шагов.

Ниже приведены две программы, которые используют операторы WHILE и REPEAT..UNTIL для органзцации цикла, а также блок-схемы соответствующих алгоритмов.

В программах используются следующие переменные: xmin и xmax — для указания диапазона (интервала) табулирования; dx — для указания шага табулирования; x и y — для арумента и значения функции, соответственно

Вложенные циклы

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

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

Одна из проблем, связанных с вложенными циклами — организация досрочного выхода из них. Во многих языках программирования есть оператор досрочного завершения цикла (break в Си, exit в Турбо Паскале, last в Perl и т. п.), но он, как правило, обеспечивает выход только из цикла того уровня, откуда вызван. Вызов его из вложенного цикла приведёт к завершению только этого внутреннего цикла, внешний же цикл продолжит выполняться. Проблема может показаться надуманной, но она действительно иногда возникает при программировании сложной обработки данных, когда алгоритм требует немедленного прерывания в определённых условиях, наличие которых можно проверить только в глубоко вложенном цикле.

Решений проблемы выхода из вложенных циклов несколько.

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

    goto. Некоторые языки программирования, например, Модула-2, просто, не имеют оператора безусловного перехода, и в них подобная конструкция невозможна.

  • Альтернатива — использовать штатные средства завершения циклов, в случае необходимости устанавливая специальные флаги, требующие немедленного завершения обработки. Недостаток — усложнение кода, снижение производительности.

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

    return. Недостаток — выделение фрагмента кода в процедуру не всегда логически обосновано, и не все языки имеют штатные средства досрочного завершения процедур.

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

  • Наконец, существуют специальные языковые средства для выхода из вложенных циклов. Так, в языке Ада программист может пометить цикл (верхний уровень вложенного цикла) меткой, и в команде досрочного завершения цикла указать эту метку. Выход произойдёт не из текущего цикла, а из всех вложенных циклов до помеченного, включительно

    [2]. ЯзыкPHP предоставляет возможность указать число прерываемых циклов после команды break — так break 2 прервёт сам цикл и вышестоящий над ним, а break 1 эквивалентно простой записи команды break[3].

Вопрос №16

Поиск минимума и максимума функций.

……

Вопрос №17

Массивы. Образование одномерных массивов. Обработка одномерных массивов.

Массив – однородная совокупность элементов

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

Массивы состоят из ограниченного числа компонент, причем все компоненты массива имеют один и тот же тип, называемый базовым. Структура массива всегда однородна. Массив может состоять из элементов типа integer , real или char , либо других однотипных элементов. Из этого, правда, не следует делать вывод, что компоненты массива могут иметь только скалярный тип.

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

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

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

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

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

Пример.Вычислить суммудлях, изменяющегося от 0,5 до 1,4 с шагом 0,1.

Sub Demo_tab()

Dim i, n As Integer

Dim s, u As Single

i = 1

‘ Цикл построения таблицы значений функции

For x = 0.5 To 1.4 Step 0.1

‘ Цикл нахождения суммы

s = 0

For n = 1 To 10

u = x ^ n / n

s = s + u

Next n

i = i + 1

Cells(i, 1) = x

Cells(i, 2) = s

Next x

End Sub

Пример.Построить и заполнить таблицу значениями функции

на отрезке с шагом 1 для аргументах, изменяющегося от 3 до 5 с шагом 0,5. Точкух=аисключить.

Sub Demo_tab()

Dim i, a As Integer

Dim x, y As Single

i = 1

For a = 4 To 6 Step 1

For x = 3 To 5 Step 0.5

‘ Вычисляем значение функции, если знаменатель не ноль

If x <> a Then

y = Sqr(x ^ 2 + a ^ 2) / (x — a)

End If

i = i + 1

Cells(i, 2) = x

Cells(i, 3) = y

Cells(i, 1) = a

Next x

i = i + 1 ‘ вставляет пустую строку между разными а

Next a

End Sub

Задания на выполнение лабораторной работы Табулирование функций

1. Составить программу вычисления значений функции на заданном отрезке (табл. 1) с использованием оператора цикла For … Next.

Таблица 1

вари-анта

Функция

Пере-менная

a

Диапазон изменения аргумента

Шаг

1

2,5

5

2

2,0

10

3

5,45

14

4

0,12

9

5

8,45

10

6

4,8

15

7

1,57

10

8

1,5

5

9

0,25

25

10

8

11

0,5

6

12

0,4

3

13

0,123

5

14

1,25

4

15

1,25

6

Все вычисления проводить в радианах. По полученной таблице значений x,yпостроить графикy=f(x) функции в тетради.

2. Составить таблицу аргументов и значений составной функции

в интервале изменения аргумента хот -2 до 2 с шагом 0,1

3. Функция задана как дискретная последовательность членов ряда:

.

Вычислить первые десять членов этой последовательности.

2. Вложенные циклы.

Можно помещать структуры управления внутрь других структур управления (например, блок If . . . Then внутрь цикла For . . . Next). Говорят, что структура управления, помещенная внутрь другой структуры управления, является вложенной.

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

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

Рассмотрим пример суммирования элементов Aij матрицы A(n,m) построчно.

Sub пример5()

Dim a() As Single, s() As Single

Dim n As Integer, m As Integer

Dim i As Integer, j As Integer

Call read(«a1», n): Call read(«b1», m)

ReDim a(1 To n, 1 To m), s(1 To n)

‘Чтение матрицы

For i = 1 To n

For j = 1 To m

Call readcell(i + 1, j, a(i, j))

Next j

Next i

‘Вычисление

For i = 1 To n

s(i) = 0

For j = 1 To m

s(i) = s(i) + a(i, j)

Next j

Call outcell(i + 1, m + 1, s(i))

Next i

End Sub

Заметим, что первый оператор Next закрывает внутренний цикл For, а последний оператор Next закрывает внешний цикл For. Точно так же и для вложенных операторов If, операторы End If автоматически применяются для закрытия ближайшего к нему оператора If. Вложенные структуры Do . . . Loop работают подобным же образом: самый дальний оператор Loop соответствует самому дальнему оператору Do.

При вводе/выводе элементов двумерного массива на рабочий лист Microsoft Excel удобно применять пользовательские процедуры ввода/вывода:

Sub readcell(i As Integer, j As Integer, val As Variant)

val = Лист1.Cells(i, j).Value

End Sub

Sub outcell(i As Integer, j As Integer, val As Variant)

Лист1.Cells(i, j).Value = val

End Sub

где I — номер строки, j — номер столбца рабочего листа.

Выход из структур управления

Оператор Exit позволяет выходить непосредственно из цикла For, цикла Do, процедуры Sub или процедуры Function. Синтаксис оператора Exit прост:

For counter = start To end [Step -increment]

[блок операторов]

[Exit For]

[блок операторов]

Next [counter]

Do [(While | Until} условие]

[блок операторов]

[Exit Do]

[блок операторов]

Loop

Exit For внутри цикла For и Exit Do внутри цикла Do могут появиться сколько угодно раз.

Оператор Exit Do работает со всеми разновидностями синтаксиса цикла Do.

Операторы Exit For и Exit Do применяются, если необходимо завершить цикл немедленно, не продолжая дальнейших итераций или не ожидая выполнения блока операторов в теле цикла.

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

— При нормальном завершении цикла значение переменной цикла имеет на единицу больше верхней границы числа циклов

— При преждевременном завершении цикла переменная цикла сохраняет свое значение, которое она получила с учетом обычных правил

— При завершении цикла по концу набора переменная цикла имеет значение Nothing (Ничего), если она является переменной типа object (Объект), или значение Empty (Пусто), если она является переменной типа Variant

Pascal. Вложенные циклы

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

For <счетчик 1>:=<начальное знач.> To <конечное знач.> Do <тело цикла 1>;
For <счетчик 2>:=<начальное знач.> To <конечное знач.> Do <тело цикла 2>;

For <счетчик n>:=<начальное знач.> To <конечное знач.> Do <тело цикла n>;

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

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

Предположим у нас есть вложенные циклы for:

for i:=1 to m1 do
for j:=1 to m2 do

for k:=1 to mn do

Количество проходов по первому циклу = m1, второму = m2*m1, n-ому = mn*mn-1*mn-2*..*m2*m1. В качестве доказательства предлагаю разобраться в следующей программе.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

program counter_performance;
uses crt;
var i, j, k, g, h: integer;
s_i, s_j, s_k, s_g, s_h: integer;
begin
s_i:=0; s_j:=0; s_k:=0; s_g:=0; s_h:=0;
for i:=1 to 5 do
begin
s_i:=s_i+1;
for j:=1 to 3 do
begin
s_j:=s_j+1;
for k:=1 to 19 do
begin
s_k:=s_k+1;
for g:=1 to 10 do
begin
s_g:=s_g+1;
for h:=1 to 6 do
s_h:=s_h+1;
end;
end;
end;
end;
write(‘i=’,s_i,‘ j=’,s_j,‘ k=’,s_k,‘ g=’,s_g,‘ h=’,s_h);
readkey;
end.

Имеются 5 циклов со счётчиками от i до h. В каждом из них при помощи переменных подсчитывается, сколько раз выполняется каждый цикл. Запустив программу на своем компьютере, Вы должны увидеть такой результат:

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

Вложенные конструкции аналогично работают в циклах с предусловием и постусловием. В следующей программе с помощью оператора while фигурка выводиться на экран.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

program nested_loops;
uses crt;
var i, j: integer;
begin
i:=1; j:=1;
while i<20 do begin
while j<i+1 do begin
write(‘\’);
j:=j+1;
end;
j:=1;
i:=i+1;
writeln;
end;
readkey;
end.

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


Похожие записи:

1.3.4. Вложенные циклы

Рис.1.10 Схема использования предопределенных процессов

предопределенного процесса.

Рассмотрим использования предопределенных процессов для формирования одномерного массива Y путем обработки од-

номерного массива X содержащего n элементов. Будем использовать предопределенные процессы: INPUT1 для описания

ввода значений элементов одномерного массива и OUTPUT1 для описания вывода

значений элементов одномерного массива. Следует отметить что при предвари-

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

ным процессам имена данных – формальные параметры. Так количество элементов

массива отражается переменной с именем m, а для массива используется имя A

(Рис.1.9).

При использовании предопределенных процессов в блок-схеме алгоритма (Рис.1.10) используются специальные символы, в которых вместо формальных пара-

метров подставляются фактические параметры – имена данных, используемые в разрабатываемой блок-схеме алгоритма: для указания количества элементов массива – n, а для одномерных массивов имена X и Y.

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

1.4. Некоторые приемы, используемые при разработке алгоритмов

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

Часто условия ветвления представляются в форме отличной от строгого синтаксиса операторов алгоритмических языков. Рассмотрим следующий пример.

Провести расчет значения функции y по условию:

 

y=f1(x) если a ≤ x ≤ b;

 

y=f2(x) в любом другом случае.

 

Для корректной формулировки условий ветвления рассмотрим числовую ось с вы-

деленными областями действия расчетных формул.

 

На оси x можно выделить три области:

— ∞ ≤ x < a — интервал изменения x от — ∞ до a, но не включающий значение a;

a ≤ x ≤ b — замкнутый интервал (сегмент, отрезок) изменения x от a до b включая

 

значения a и b на границах отрезка;

 

 

Вложенные циклы. — информатика, уроки

Класс: 9

Дата:

Тема: Вложенные циклы.

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

Тип и форма проведения урока: комбинированный урок с элементами проблемного изложения материала.

Задачи:

  1. изучение основных понятий темы;
  1. совершенствование навыков составления программ на Паскале;
  1. стимулирование интереса учащихся к программированию.
  1. развитие алгоритмического мышления, умения применять полученные знания при решении задач;
  2. развитие познавательного интереса учащихся;
  3. развитие умений анализировать информацию;
  4. развитие умений устанавливать взаимосвязь вопросов информатики с другими школьными предметами, с реальной жизнью.
  • Воспитывающие:
  1. воспитание интереса к предмету;
  2. воспитание культуры речи и работы на компьютере.

Оборудование:

  • рабочие места учащихся, оборудованных ПК;
  • установленное приложение Turbo Pascal 7.0;
  • мультимедийный проектор, экран;
  • мультимедийная презентация.

План урока.

I. Организационный момент

II. Актуализация усвоения изученного ранее материала

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

IV. Закрепление нового материала

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

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

Ход урока.

I. Организационный момент.

1. Приветствие.

-Я вижу, что вся группа в сборе. Это очень приятно. Я уверен, что сегодня мы с вами плодотворно поработаем.

II. Актуализация усвоения изученного ранее материала.

            — Предлагаю повторить пройденный материал, ответив на ряд несложных вопросов:

1.Что такое цикл? (Алгоритм, содержащий повторяющиеся действия.)

2.Что такое тело цикла? (Действие, повторяемое в цикле.)

3.Каков формат записи оператора цикла с предусловием (цикл ПОКА)?             (while условие do оператор;)

4.Каков формат оператора цикла с постусловием (цикл ДО)? (repeat оператор until условие;)

  1. Каков формат оператора цикла с параметром? (for i:=n1 to n2 do оператор;)

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

1. Постановка проблемного вопроса и объяснение новой темы.

            — Давайте внимательно посмотрим на задачу, написанную на доске.

Задача. Назовем билет счастливым, если в его номере abcd (от 0000 до 9999) a+b=c+d. Найдите количество таких билетов.

            — Подобные задачи решаются с помощью вложенных циклов. Тема нашего сегодняшнего урока: «Вложенные циклы».

— Цикл называется вложенным, если он размещается внутри другого цикла.

— Алгоритм, в котором тело цикла содержит внутри еще один или несколько циклов, называется алгоритмом с вложенным циклом.

— Цикл, в тело которого мы вкладывали команды, называется внешним циклом. А цикл, который мы вложили в тело первого, называется внутренним или вложенным циклом.

— Блок-схема алгоритма, в котором цикл по счётчику I является внешним циклом, а цикл по счётчику J является внутренним, выглядит следующим образом:

 

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

— Количество повторений тела вложенного цикла можно подсчитать по формуле, которую вы видите на слайде.

— Подсчитайте, сколько раз будет выполнен оператор, стоящий в теле цикла? (Правильный ответ: 9 раз).

2. Решение проблемного вопроса.

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

— Алгоритм решения таков: организуем при помощи вложенных циклов перебор значений от 0 до 9 с шагом равным 1-це для переменных a, b, c и d. В теле последнего из вложенных циклов будем проверять условие a+b=c+d. Если условие выполняется, то будем увеличивать на единицу счётчик счастливых билетов. В итоге, после выполнения программы, мы получим количество счастливых билетов.

— Так будет выглядеть программный код данной задачи в среде программирования Turbo Pascal 7.0.:

3. Физминутка.

            — Я предлагаю вам встать и разомкнуться, так как сейчас мы начнём физминутку, чтобы снять усталость и улучшить самочувствие.

  1. И.п. — стоя, руки на поясе. 1 — правую руку вперед, левую вверх, 2 — переменить положения рук. Повторить 3-4 раза, затем расслабленно опустить вниз и потрясти кистями, голову наклонить вперед. Темп средний.
  2. И.п. — стоя, кисти тыльной стороной на поясе. 1-2 – свести локти вперед, голову наклонить вперед, 3-4 — локти назад, прогнуться. Повторить 6-8 раз. Темп медленный.
  3. И.п. — стойка ноги врозь, руки за голову. 1 — резко повернуть таз направо, 2 — резко повернуть таз налево. Во время поворотов плечевой пояс оставить неподвижным. Повторить 6-8 раз. Темп средний..
  4. И.п. — стойка ноги врозь. 1-2 — наклон вперед, правая рука скользит вдоль ноги вниз, левая, сгибаясь, вдоль тела вверх, 3-4 и.п., 5-8 — то же в другую сторону. Повторить 6-8 раз. Темп средний.

— Заканчиваем упражнение и приступаем к решению задач по новой теме.

IV. Закрепление нового материала.

            — У каждого из вас на рабочем столе есть текстовый документ «Задание.doc». В нём содержатся условия трёх задач по теме вложенные циклы. Задачи разного уровня сложности (на оценку «5», «4», «3»). Приложение 1.

-Одну из задач вы к концу урока должны решить. На это у вас осталось времени 15 минут.

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

            В конце учебного занятия подводятся итоги урока и выставляется оценка за решённую в Turbo Pascal 7.0 задачу.

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

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

Приложение 1.

В документе «Задание.doc» содержится три варианта набора разноуровневых задач.

Вариант 1.

Задача на 3 балла.

У тараканов и пауков вместе 74 лапки. Сколько могло быть тараканов и пауков, если у таракана — 6 лапок, а у паука – 8.

Задача на 4 балла.

Приписать к числу 125 слева и справа по одной цифре так, чтобы полученное пятизначное число делилось на 3; 4 и 7.

Задача на 5 баллов.

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

Вариант 2.

Задача на 3 балла.

У тараканов и пауков вместе 50 лапок. Сколько могло быть тараканов и пауков, если у таракана — 6 лапок, а у паука – 8.

Задача на 4 балла.

Приписать к числу 1022 слева и справа по одной цифре так, чтобы полученное шестизначное число делилось на 7, 8 и 9. Найти это число.

Задача на 5 баллов.

Назовем билет счастливым, если в его номере xyztuv ( от 000000 до 999999) первые три цифры нечетные и различные, а остальные — четные. Кроме того, 7 и 8 не должны стоять рядом. Найти количество таких билетов.

Вариант 3.

Задача на 3 балла.

Найти все натуральные числа a, b, c из интервала от 3 до 20, для которых выполняется равенство a2+b2=c2.

Задача на 4 балла.

Приписать к числу 102 слева и справа по одной цифре так, чтобы полученное пятизначное число делилось на 4; 5 и 6. Найти это число.

Задача на 5 баллов.

Назовем билет счастливым, если в его номере xyztuv (от 000000 до 999999) первые три цифры четные и различные, а остальные — нечетные. Кроме того, 7 и 8 не должны стоять рядом. Найти количество таких билетов.

Просмотр содержимого документа
«Вложенные циклы.»

Класс: 9

Дата:

Тема: Вложенные циклы.

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

Тип и форма проведения урока: комбинированный урок с элементами проблемного изложения материала.

Задачи:

  • развитие алгоритмического мышления, умения применять полученные знания при решении задач;

  • развитие познавательного интереса учащихся;

  • развитие умений анализировать информацию;

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

Оборудование:

  • рабочие места учащихся, оборудованных ПК;

  • установленное приложение Turbo Pascal 7.0;

  • мультимедийный проектор, экран;

  • мультимедийная презентация.

План урока.

I. Организационный момент

II. Актуализация усвоения изученного ранее материала

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

IV. Закрепление нового материала

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

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

Ход урока.

I. Организационный момент.

1. Приветствие.

-Я вижу, что вся группа в сборе. Это очень приятно. Я уверен, что сегодня мы с вами плодотворно поработаем.

II. Актуализация усвоения изученного ранее материала.

Предлагаю повторить пройденный материал, ответив на ряд несложных вопросов:

  1. Что такое цикл? (Алгоритм, содержащий повторяющиеся действия.)

  2. Что такое тело цикла? (Действие, повторяемое в цикле.)

  3. Каков формат записи оператора цикла с предусловием (цикл ПОКА)? (while условие do оператор;)

  4. Каков формат оператора цикла с постусловием (цикл ДО)? (repeat оператор until условие;)

  5. Каков формат оператора цикла с параметром? (for i:=n1 to n2 do оператор;)

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

1. Постановка проблемного вопроса и объяснение новой темы.

— Давайте внимательно посмотрим на задачу, написанную на доске.

Задача. Назовем билет счастливым, если в его номере abcd (от 0000 до 9999) a+b=c+d. Найдите количество таких билетов.

— Подобные задачи решаются с помощью вложенных циклов. Тема нашего сегодняшнего урока: «Вложенные циклы».

— Цикл называется вложенным, если он размещается внутри другого цикла.

— Алгоритм, в котором тело цикла содержит внутри еще один или несколько циклов, называется алгоритмом с вложенным циклом.

— Цикл, в тело которого мы вкладывали команды, называется внешним циклом. А цикл, который мы вложили в тело первого, называется внутренним или вложенным циклом.

— Блок-схема алгоритма, в котором цикл по счётчику I является внешним циклом, а цикл по счётчику J является внутренним, выглядит следующим образом:

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

— Количество повторений тела вложенного цикла можно подсчитать по формуле, которую вы видите на слайде.

— Подсчитайте, сколько раз будет выполнен оператор, стоящий в теле цикла? (Правильный ответ: 9 раз).

2. Решение проблемного вопроса.

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

— Алгоритм решения таков: организуем при помощи вложенных циклов перебор значений от 0 до 9 с шагом равным 1-це для переменных a, b, c и d. В теле последнего из вложенных циклов будем проверять условие a+b=c+d. Если условие выполняется, то будем увеличивать на единицу счётчик счастливых билетов. В итоге, после выполнения программы, мы получим количество счастливых билетов.

— Так будет выглядеть программный код данной задачи в среде программирования Turbo Pascal 7.0.:

3. Физминутка.

— Я предлагаю вам встать и разомкнуться, так как сейчас мы начнём физминутку, чтобы снять усталость и улучшить самочувствие.

  • И.п. — стоя, руки на поясе. 1 — правую руку вперед, левую вверх, 2 — переменить положения рук. Повторить 3-4 раза, затем расслабленно опустить вниз и потрясти кистями, голову наклонить вперед. Темп средний.

  • И.п. — стоя, кисти тыльной стороной на поясе. 1-2 – свести локти вперед, голову наклонить вперед, 3-4 — локти назад, прогнуться. Повторить 6-8 раз. Темп медленный.

  • И.п. — стойка ноги врозь, руки за голову. 1 — резко повернуть таз направо, 2 — резко повернуть таз налево. Во время поворотов плечевой пояс оставить неподвижным. Повторить 6-8 раз. Темп средний. .

  • И.п. — стойка ноги врозь. 1-2 — наклон вперед, правая рука скользит вдоль ноги вниз, левая, сгибаясь, вдоль тела вверх, 3-4 и.п., 5-8 — то же в другую сторону. Повторить 6-8 раз. Темп средний.

— Заканчиваем упражнение и приступаем к решению задач по новой теме.

IV. Закрепление нового материала.

— У каждого из вас на рабочем столе есть текстовый документ «Задание.doc». В нём содержатся условия трёх задач по теме вложенные циклы. Задачи разного уровня сложности (на оценку «5», «4», «3»). Приложение 1.

-Одну из задач вы к концу урока должны решить. На это у вас осталось времени 15 минут.

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

В конце учебного занятия подводятся итоги урока и выставляется оценка за решённую в Turbo Pascal 7.0 задачу.

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

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

Приложение 1.

В документе «Задание.doc» содержится три варианта набора разноуровневых задач.

Вариант 1.

Задача на 3 балла.

У тараканов и пауков вместе 74 лапки. Сколько могло быть тараканов и пауков, если у таракана — 6 лапок, а у паука – 8.

Задача на 4 балла.

Приписать к числу 125 слева и справа по одной цифре так, чтобы полученное пятизначное число делилось на 3; 4 и 7.

Задача на 5 баллов.

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

Вариант 2.

Задача на 3 балла.

У тараканов и пауков вместе 50 лапок. Сколько могло быть тараканов и пауков, если у таракана — 6 лапок, а у паука – 8.

Задача на 4 балла.

Приписать к числу 1022 слева и справа по одной цифре так, чтобы полученное шестизначное число делилось на 7, 8 и 9. Найти это число.

Задача на 5 баллов.

Назовем билет счастливым, если в его номере xyztuv ( от 000000 до 999999) первые три цифры нечетные и различные, а остальные — четные. Кроме того, 7 и 8 не должны стоять рядом. Найти количество таких билетов.

Вариант 3.

Задача на 3 балла.

Найти все натуральные числа a, b, c из интервала от 3 до 20, для которых выполняется равенство a2+b2=c2.

Задача на 4 балла.

Приписать к числу 102 слева и справа по одной цифре так, чтобы полученное пятизначное число делилось на 4; 5 и 6. Найти это число.

Задача на 5 баллов.

Назовем билет счастливым, если в его номере xyztuv (от 000000 до 999999) первые три цифры четные и различные, а остальные — нечетные. Кроме того, 7 и 8 не должны стоять рядом. Найти количество таких билетов.

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

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