§9 Инструкция цикла с параметром for. Цикл for основанный на диапазоне. §2. Графическое обозначение цикла с параметром в блок-схеме. For … to … do: алгоритм работы, синтаксис

Nokia 20.04.2019
Nokia

ПЛАН-КОНСЕКТ УРОКА

ПО ИНФОРМАТИКЕ И ИКТ

В 10 КЛАССЕ ПО ТЕМЕ:

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

Предмет: Информатика и ИКТ

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

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

Форма: урок-практикум

Цели урока

образовательные: Познакомиться с понятием «Циклы с параметром». Закрепить знания учеников об алгоритме.

развивающие: Воспитать трудолюбие, самостоятельность, культуру речи и общения.

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

Познавательные УУД: формируют и развивают компетентность в области использования ИКТ

(ИКТ-компетенции).

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

Коммуникативные УУД: умеют работать индивидуально и в группе.

Личностные УУД: понимают значимость подготовки в области информатики и ИКТ в условиях

развития информационного общества.

Средства обучения: проектор, персональный компьютер, специализированное программное обеспечение (среда программирования «PascalABC»).

Ход урока

1. Организация начала урока

Здравствуйте. Сегодня я, буду вести уроки «Информатики и ИКТ». Приветствую обучающихся, проверяю их готовность к уроку. Обучающиеся приветствуют друг друга.

2. Проверка выполнения домашнего задания

Спрашиваю у них пройденный материал.

1. Что такое циклический алгоритм?

Циклический алгоритм – это алгоритм, содержащий один или несколько циклов.

2. Что такое цикл?

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

3. Какую конструкцию имеет цикл с предусловием и цикл с постусловием?

    Цикл с предусловием “Пока”
    (While ... do )

    Цикл с постусловием “До”
    (Repeat ... until )

4. В чем отличие цикла с постусловием от цикла с предусловием?

Отличие:

Есть небольшое отличие в организации цикла repeat по сравнению с while: для выполнения в цикле repeat нескольких операторов не следует помещать эти операторы в операторные скобки begin ... end. Зарезервированные слова repeat и until действуют как операторные скобки.

Конструкция repeat ... until работает аналогично циклу while. Различие заключается в том, что цикл while проверяет условие до выполнения действий, в то время как repeat проверяет условие после выполнения действий. Это гарантирует хотя бы одно выполнение действий до завершения цикла.

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

Тема наших уроков будет: «Циклические алгоритмы. Цикл с параметром».

Иногда заранее известно, сколько раз должен выполняться цикл. Для задач такого типа в языке Паскаль имеются операторы циклов с параметрами .
Блок-схема цикла с параметром выглядит так:

Формат записи таких операторов следующий:

Если операторов несколько, тогда, используются операторные скобки begin ... end

При выполнении оператора for вначале вычисляется выражение <нач.знач .> и осуществляется присваивание его значения переменной цикла <п ар.цикла > := <нач. знач .>.
После этого циклически повторяются:
1) проверка условия <пар.цикла > <кон. знач .>; если условие не выполнено, оператор for завершает работу;
2) выполнение оператора <оператор > или операторов s1; s2; s3; ... sn, как в случае третьем;
3) переменная цикла <пар. цикла > увеличивается на единицу.

Графическое изображение циклов for будет таким:

Существует другая форма оператора цикла for:
for <пар.цик .> := <нач. зн .> downto <кон. зн .> do <оператор >.
Замена зарезервированного слова to на downto означает, что шаг параметра цикла равен (-1).

Изменение значения параметра идет от большего значения к меньшему, т. е.

<нач. знач .> <кон. знач .>.

Теперь рассмотрим задачу:

    Вывести на экран числа от 1 до 5 в:

    a) прямом порядке;

    b) обратномпорядке.

    Математическая модель:

    a) 1 2 3 4 5

    b) 5 4 3 2 1

Решение данной задачи выглядит так:

Инструкция цикла for реализует алгоритмическую структуру цикл с параметром (или цикл со счетчиком). Цикл for применяется в том случае, когда в программе, прежде выполнения инструкций цикла, становится известным (или заранее определено) количество шагов этого цикла. В блок-схеме инструкция for изображается следующим образом:

Синтаксис:

For (инициализация ; условие ; модификация ) { Инструкции тела цикла; }

Если в теле цикла одна инструкция, то { } можно опустить. Переменная-параметр цикла (счетчик) может быть любого числового типа. Это делает цикл for C++ таким же универсальным, как и цикл типа while . В разделе модификации чаще всего используется операция постфиксного или префиксного инкремента (или декремента), но может использоваться любое выражение с присваиванием, изменяющее значение параметра цикла. Цикл работает следующим образом:

  • В начале происходит описание и инициализация переменной-счетчика
  • Далее проверка условия: если выражение имеет значение true , произойдет итерация
  • После выполнения инструкций тела цикла производится модификация величины счетчика

Примечание : в C++ является правилом делать описание переменной-счетчика в заголовке цикла. Но это не обязательно, тем более, если планируется инициализировать несколько переменных в разделе инициализации так, как это реализовано в программе 9.2. Однако, использование описания переменной-счетчика в заголовке цикла приводит к описанию локальной переменной, уничтожаемой автоматически при завершении работы цикла. Поэтому, без крайней необходимости, описание переменной-счетчика вне цикла for производить не следует.
В процессе работы цикла for не рекомендуется изменять операнды в выражениях заголовка цикла – это приведет к разного рода ошибкам! Но сами значения переменных (или констант), в том числе изменяемые значения (счетчик), использовать можно. Рассмотрим классический пример.

Программа 9.1 Дано натуральное число N. Вывести все делители этого числа.

#include << "N = "; cin >> N; for (int i = 2; i < N / 2; i++) { if (N % i == 0) cout << i << " "; } return 0; } N = 16000 2 4 5 8 10 16 20 25 32 40 50 64 80 100 125 128 160 200 250 320 400 500 640 800 1000 1600 2000 3200 4000

Использование инструкции continue в цикле for

При использовании инструкции continue в цикле for необходимо учитывать особенности работы этого цикла:

  • Инструкции, следующие после continue , будут пропущены
  • Затем происходит модификация счетчика
  • Переход к выполнению следующей итерации (иначе, проверки условия)

Покажем это на примере: int main() { for (int i = 1; i < 20; i++) { if (i % 2 == 0) continue; cout << i << " "; } 1 3 5 7 9 11 13 15 17 19

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

Int main() { for (int i = 1; i < 20; i += 2) cout << i << " ";

Несколько выражений в разделе инициализации и модификации

Как мы уже отметили ранее в заголовке инструкции for должно быть три раздела. Выражения, находящееся в этих разделах, можно опускать, но нельзя опускать ";" . В конце концов, можно оставить только; . Заголовок в виде:

For (;;) { ... }

является заголовком “бесконечного” цикла. (Выход из цикла должен программироваться внутри тела цикла).
C++ поддерживает несколько выражений в разделах инициализации и модификации в заголовке инструкции for . При этом условие продолжения цикла должно быть одно!
Например. Постановка задачи: Вычислить факториал числа, не превосходящий 20.
Программа 9.2

#include using namespace std; int main() { unsigned long long n; int i, k; cout << "k = "; cin >> k; // 0 <= k <= 20 for(n = 1, i = 1; i <= k; n *= i, ++i); cout << k << "! = " << n << endl; return 0; } k = 20 20! = 2432902008176640000

Примечание : обратите внимание, что поток вывода в строке 12 не относится к телу цикла! (В конце заголовка – ;). Таким образом, данный цикл в теле имеет пустую инструкцию, а все выражения вычисляются в заголовке. Программа 9.2 правильно вычисляет факториал числа от 0 до 20 .

Цикл for основанный на диапазоне (range-based for)

Для перебора элементов массива или контейнера приходится выполнять однотипные действия, при этом использовать громоздкий код. Для упрощения работы с контейнерами в C++ существует специальная форма цикла for – range-based for (цикл for основанный на диапазоне или диапазонный for).
Синтаксис :

For (объявление : имя_последовательности ) loop_statement

Использование range-based for на примере C-массива:
Программа 9.3

#include using namespace std; int main() { int x { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; for (auto &s: x) { cout << s << " "; } return 0; }

Чтобы элементы массива можно было изменять – переменная s должна быть ссылочной переменной (как в примере выше). Если переменная не является ссылкой, то данные будут копироваться. Для автоматического выведения типа в этом цикле используется спецификатор auto . range-based for имеет ограничение на работу с динамическими массивами: он не поддерживает изменение размера массива, так как содержит фиксированный указатель конца массива. При работе с массивами, имеющими фиксированный размер, диапазонный for является прекрасной и безопасной альтернативой обычному for .

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

Так же, как и другие инструкции циклов, for поддерживает структуру вложенных циклов. Применение вложенных циклов for для организации ввода и вывода двумерных массивов выглядит гораздо компактнее, чем при использовании цикла while .
Однако, при решении задач обхода таких массивов, необходимо избегать применение условной инструкции if . Зачастую, задачу можно реализовать более рационально, путем манипуляции индексами (переменными цикла i и j). То есть, поставить в зависимость изменение одного индекса, от значения величины другого. Рассмотрим два примера.
Программа 9.4 Дана квадратная матрица размера n, элементы которой равны 0. Заполнить элементы, лежащие ниже и на самой главной диагонали единицами.

#include using namespace std; int main() { int n; cout << "n = "; cin >> n; int mas[n][n]; // Заполняем нулями for(int i = 0; i < n; i++) for(int j = 0; j < n; j++) mas[i][j] = 0; // Реализация for(int i = 0; i < n; i++) for(int j = 0; j <= i; j++) mas[i][j] = 1; // Вывод for(int i = 0; i < n; i++) { for(int j = 0; j < n; j++) { cout.width(2); cout << mas[i][j]; } cout << "\n"; } return 0; } n = 10 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1

Программа 9.5 Составить программу заполнения массива числами треугольника Паскаля и вывода этого массива. Треугольник паскаля имеет вид:


В этом треугольнике на вершине и по бокам стоят единицы (в программе 9.5 треугольник “положен на бок” – стороны треугольника: первый столбец и главная диагональ). Каждое число равно сумме двух чисел, расположенных над ним. Строки треугольника симметричны относительно вертикальной оси и содержат биноминальные коэффициенты.

#include using namespace std; int main() { int n; cout << "n = "; cin >> n; int pas[n][n]; for (int i = 0; i < n; i++) for (int j = 0; j < n; j++) pas[i][j] = 0; pas = 1; for (int i = 1; i < n; i++) { pas[i] = 1; for (int j = 1; j <= i; j++) { pas[i][j] = pas + pas[j]; } } for (int i = 0; i < n; i++) { for (int j = 0; j <= i; j++) { cout.width(4); cout << pas[i][j]; } cout << "\n"; } return 0; } n = 12 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 1 7 21 35 35 21 7 1 1 8 28 56 70 56 28 8 1 1 9 36 84 126 126 84 36 9 1 1 10 45 120 210 252 210 120 45 10 1 1 11 55 165 330 462 462 330 165 55 11 1

Вопросы
  1. Может ли быть заменена в программе инструкция цикла for на инструкцию цикла while? Всегда ли это можно сделать?
  2. Когда удобнее применять для организации циклов инструкцию for? while?
  3. Возможны ли в заголовке инструкции for следующие выражения: a) for (;a > b && !(a % 2);) b) for (a > b;;) c) for (;;i = 0) d) for (;i = 0;) e) for (;;i++, --b) f) for (--i;;) g) for (b = 0; b != a;) ?
  4. Переменная i – параметр внешнего цикла, а j – вложенного. Доступна ли будет переменная j во внешнем цикле? i во вложенном цикле?
Учебник
Домашняя работа
  1. Зад. 29. Напишите программу, в которой вводятся натуральные числа a и b , а на дисплей выводятся все простые числа в диапазоне от a до b (идея алгоритма Программа 8.5)
  2. Зад. 30. Совершенным называется число, равное сумме всех своих делителей, меньших его самого (например, число 6 = 1 + 2 + 3). Напишите программу, которая вводит натуральное число N и определяет, является ли число N совершенным.
  3. Напишите программу, которая выводит на экран квадратную числовую таблицу размера n x n , имеющую следующий вид при n = 10: 1 * * * * * * * * * * 2 * * * * * * * * * * 3 * * * * * * * * * * 4 * * * * * * * * * * 5 * * * * * * * * * * 6 * * * * * * * * * * 7 * * * * * * * * * * 8 * * * * * * * * * * 9 * * * * * * * * * * 10
Литература
  1. Лафоре Р. Объектно-ориентированное программирование в C++ (4-е изд.). Питер: 2004
  2. Прата, Стивен. Язык программирования C++. Лекции и упражнения, 6-е изд.: Пер. с англ. - М.: ООО «И.Д. Вильяме», 2012
  3. Липпман Б. Стенли, Жози Лажойе, Барбара Э. Му. Язык программирования С++. Базовый курс. Изд. 5-е. М: ООО “И. Д. Вильямс”, 2014
  4. Эллайн А. C++. От ламера до программера. СПб.: Питер, 2015
  5. Шилдт Г. С++: Базовый курс, 3-изд. М.: Вильямс, 2010

Тема урока «Цикл с параметром. Решение задач.»

Тип урока: урок применения знаний и умений

Вид урока: урок-практикум

Цели урока:

Образовательные

  • Научиться создавать алгоритмы с конструкцией «цикл»;
  • Совершенствовать умение реализации алгоритма на языке программирования;

Развивающие

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

Воспитательные

  • Воспитание умения работать в команде;
  • Воспитание чувства ответственности, аккуратности, внимательности к деталям;

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

  1. Найти математическое решение задачи
  2. Составить алгоритм для решения
  3. Преобразовать алгоритм на язык программирования
  4. Использовать раннее пройденные операторы

Метапредметные связи

  • Математика ()
  • Биология? (задача про амеб)

Внутрипредметные связи:

  • «Алгоритмизация»
  • «Моделирование»
  • «Системы счисления»

Структура урока

  1. Организационный момент
  2. Проверка материала – словарный диктант 3 мин
  3. Объяснение целей и задач, формирование групп для работы 2 мин
  4. Инструкции для работы 10 мин
  5. Физкультминутка 1 мин
  6. Самостоятельная работа по инструкциям 20 мин
  7. Обобщение и систематизация 1 мин
  8. Рефлексия 3 мин
  9. Оценивание 2 мин
  10. Домашнее задание 2 мин

Конспект урока.

Здравствуйте, садитесь. Прежде чем приступим к уроку, давайте проверим знание ключевых слов, операторов языка Паскаль. Для этого напишем словарный диктант. Листочки уже лежат у вас на столах. Тетрадки положили на край стола. (определение вариантов ). Внимание на доске написаны слова, вам надо определить их значение. Вам дается 2 мин.

Теперь проверим; правильные варианты ответов на интерактивной доске.

+ Если ответов больше правильных, то ставим в карту урока +

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

При двух и более правильных ответах ставим +

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

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

Приступим!

Рассмотрим следующую задачу:

Даны два целых числа a и b. Выведите на экран каждое числа из диапазона от a до b.

Составим математическую модель.

Определяем какие действия повторяются.

Теперь выстраиваем алгоритм

  1. начало
  2. Ввести a,b
  3. Повторить действия
  1. Выводим на экран число i
  1. Конец

Переводим на алгоритм на язык программирования

Var i,a,b:integer;

Begin

Write(‘Введите a и b’);

Readln(a,b);

For i:=a to b do Writeln(i);

End.

Теперь разбейтесь на пары, в которых вы будете работать за компьютерами. Но прежде, чем вы приступите к практике, выполним физкультминутку.

Задание1. Введите программу в компьютер, проверьте правильность выполнения.

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

Небольшая подсказка: Когда в задаче присутствует условие, какой оператор мы должны использовать?

Вывести на экран числа кратные 3

Вывести на экран числа не кратные 5

Вывести на экран числа не кратные 7)

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

Все справились с этой задачей? Те кто справились, нарисуйте себе плюсик в карте урока

Выполним вторую задачу. (Задача аналогичная задаче про спортсмена, которая про студента и стипендию )

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

Кто выполнил – поднимают руки, подхожу, проверяю. Если вы выполнили быстрее, то можете попробовать свои силы на задаче3

Теперь давайте посмотрим на свои карты: у кого набралось 5 + получают оценку 5, у кого набралось 4+ - оценка 4, и т.д. оценку 2 я не ставлю, но на следующем уроке работать надо больше.

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

Итак, задачи, которые мы ставили перед собой на этот урок достигнуты?

Рассмотрели задачи на применение цикла с параметром.

Применили условный оператор, операторы целочисленного деления.

Домашнее задание на доске/

  1. Задание на выполнение циклического алгоритма, взятое из огэ по информатике. Ответ запишите в тетради.
  1. Задание аналогичное тому, что мы делали сегодня. Сдать в электронном виде.

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

Предварительный просмотр:

Вид задания

Отметка о выполнении

Комментарии

Словарный диктант

Устные ответы

Задание

Задача 1

Задача 2

Задача 3

Карта ученика ______________________________________________________________________

Вид задания

Отметка о выполнении

Комментарии

Словарный диктант

Устные ответы

Задание

Задача 1

Задача 2

Задача 3

Карта ученика ______________________________________________________________________

Вид задания

Отметка о выполнении

Комментарии

Словарный диктант

Устные ответы

Задание

Задача 1

Задача 2

Задача 3

Карта ученика ______________________________________________________________________

Вид задания

Отметка о выполнении

Комментарии

Словарный диктант

Устные ответы

Задание

Задача 1

Задача 2

Задача 3

Предварительный просмотр:

Задача 1 «Диапазон»

Задание вывести на экран четные числа

Задача 2 «Бедный студент»

*Задача 3

Задача 1 «Диапазон»

Даны два целых числа a, b. Вывести на экран все числа из этого диапазона.

Задание вывести на экран нечетные числа

Задача 2 «Бедный студент»

Ежемесячная стипендия студента составляет A руб., а расходы на проживание превышают стипендию и составляют B руб. в месяц. Рост цен ежемесячно увеличивает расходы на 3%. Составьте программу расчета необходимой суммы денег, которую надо единовременно попросить у родителей, чтобы можно было прожить учебный год (10 месяцев), используя только эти деньги и стипендию.

*Задача 3

Дано натуральное число n. Вычислить:

Задача 1 «Диапазон»

Даны два целых числа a, b. Вывести на экран все числа из этого диапазона.

Задание вывести на экран числа кратные 3

Задача 2 «Бедный студент»

Ежемесячная стипендия студента составляет A руб., а расходы на проживание превышают стипендию и составляют B руб. в месяц. Рост цен ежемесячно увеличивает расходы на 3%. Составьте программу расчета необходимой суммы денег, которую надо единовременно попросить у родителей, чтобы можно было прожить учебный год (10 месяцев), используя только эти деньги и стипендию.

*Задача 3

Дано натуральное число n. Вычислить:

Задача 1 «Диапазон»

Даны два целых числа a, b. Вывести на экран все числа из этого диапазона.

Задание вывести на экран числа не кратные 5

Задача 2 «Бедный студент»

Ежемесячная стипендия студента составляет A руб., а расходы на проживание превышают стипендию и составляют B руб. в месяц. Рост цен ежемесячно увеличивает расходы на 3%. Составьте программу расчета необходимой суммы денег, которую надо единовременно попросить у родителей, чтобы можно было прожить учебный год (10 месяцев), используя только эти деньги и стипендию.

*Задача 3

Дано натуральное число n. Вычислить:

Задача 1 «Диапазон»

Даны два целых числа a, b. Вывести на экран все числа из этого диапазона.

Задание вывести на экран четные числа

Задача 2 «Бедный студент»

Ежемесячная стипендия студента составляет A руб., а расходы на проживание превышают стипендию и составляют B руб. в месяц. Рост цен ежемесячно увеличивает расходы на 3%. Составьте программу расчета необходимой суммы денег, которую надо единовременно попросить у родителей, чтобы можно было прожить учебный год (10 месяцев), используя только эти деньги и стипендию.

*Задача 3

Дано натуральное число n. Вычислить:

Задача 1 «Диапазон»

Даны два целых числа a, b. Вывести на экран все числа из этого диапазона.

Задание вывести на экран нечетные числа

Задача 2 «Бедный студент»

Ежемесячная стипендия студента составляет A руб., а расходы на проживание превышают стипендию и составляют B руб. в месяц. Рост цен ежемесячно увеличивает расходы на 3%. Составьте программу расчета необходимой суммы денег, которую надо единовременно попросить у родителей, чтобы можно было прожить учебный год (10 месяцев), используя только эти деньги и стипендию.

*Задача 3

Дано натуральное число n. Вычислить:


Особенное место в Turbo Pascal занимают циклы. Их начинают изучать сразу же после отработки навыков ввода-вывода информации на экран. Ведь большинство задач сводится к тому, что циклы с параметром и другие конструкции помогают облегчить написание и функционирование определенного блока программы.

Разновидности циклов

Всего различают три разновидности:

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

Циклы с параметром, иначе их называют For … to … do или For … downto …. do, многократно повторяют определенную последовательность действий. В принципе, и другие разновидности используются с этой же целью, только в for-цикле заранее известно количество шагов.

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

Основные определения по теме

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

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

For … to … do: алгоритм работы, синтаксис

Как уже было сказано, циклы с параметром используются в задачах, в которых указан «промежуток», в котором предстоит работать. Так, это может быть массив чисел, дней недели, строк стихотворения и т. д.

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

for исх.переменная := граница 1 to граница 2 do

тело цикла ;

Здесь: исх. переменная объявляется пользователем в начале программы или блока; граница 1 и граница 2 - начальное и конечное значение промежутка; в теле цикла прописывается ряд действий, которые должны выполняться программой. Необходимо помнить, что если тело цикла содержит всего 1 команду, тогда операторные скобки begin…end можно опустить. В таком варианте конструкции счетчик, а именно <исх.переменная>, будет увеличиваться с шагом, равным 1.

for исх.переменная := граница 1 downto граница 2 do

тело цикла ;

Здесь же исх. переменная будет уменьшаться с шагом, равным 1.

Схема работы цикла с параметром For … to … do будет выглядеть следующим образом:

  • Задается значение верхней границы промежутка, т. е. граница 2 .
  • Исх.переменной присваивается значение параметра граница 1 .
  • Проходит проверка условия: исх.переменная ≤ граница 2 .
  • При получении результата True (Истина ) выполняется тело цикла.
  • Счетчик увеличивается на шаг, равный 1.
  • Выполнение пунктов 3-5 происходит ровно до того момента, пока условие истинно: исх.переменная > граница 2 . Как только это произошло, происходит выход из цикла и управление передается команде, следующей за данной конструкцией.

В For … downto … do алгоритм работы схож с вышеуказанным, за исключением некоторых пунктов:

  • В 3-м пункте проверяется условие: исх.переменная ≥ граница 2 .
  • В 5-й строчке алгоритма счетчик уменьшается на 1.
  • В 6-м пункте команды 3-5 будут выполняться до тех пор, пока не будет удовлетворено условие: исх.переменная < граница 2.

Все остальное аналогично в обоих алгоритмах работы.

Блок-схема цикла с параметром

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

Основные требования к циклу с параметром

Циклы с параметрами требуют определенного рода условий.

  • Счетчик и границы промежутка (т. е. исх.переменная, граница 1 и граница 2) должны принадлежать одному типу данных. Если имеется лишь совместимость между начальным и конечным значениями отрезка и исходной переменной, то программа может повести себя неправильно, поскольку границы будут преобразованы по типу данных исходного параметра.
  • Тип данных, которому должны принадлежать значения параметров, должен быть целочисленным. Крайне не рекомендуется использовать вещественный тип.
  • Изменять значение параметра исх.переменная в теле цикла принудительно нежелательно. Иначе пользователь с трудом сможет отследить возможные появившиеся ошибки.
  • В отличие от других видов циклов, в For … to … do илиFor … downto … do шаг не может менятьсяна параметр, отличный от 1.

Turbo Pascal: как выйти из цикла

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

Циклы с параметром в паскале (программирование которых предполагает «извечную» истинность условия) можно остановить с помощью Continue. Здесь работа налажена следующим образом: текущая итерация досрочно заканчивает свое выполнение, управление передается следующей команде, но без выхода из цикла.

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

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

Примеры заданий с решением

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

Задача 1

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

Алгоритм действий:

  1. Создать двумерный массив.
  2. Проверить каждое число на соответствие условиям:

a) если 9 < Х < 100, то разделить его нацело на 10 посредством div;

b) выделить вторую цифру числа посредством деления через mod;

c) сложить выделенные цифры;

d) поделить посредством mod заданную сумму на 2;

e) если результат будет равен 0, то счетчик увеличивается на 1.

Задача 2

Дан одномерный массив целочисленных элементов. Найти количество положительных чисел.

Алгоритм действий:

  1. Создать массив целочисленных элементов, созданных посредством randomize.
  2. В цикл с параметром вложить IF, который будет проверять заданный элемент на соответствие условию: Х>0.
  3. Если условие выполняется, то счетчик увеличивается на 1.
  4. После цикла следует вывести на экран получившееся значение счетчика.

Данные, указанные в скобках {}, являются комментариями. В строке 11 можно вывести массив на экран двумя способами: оставить пробел между числами либо отвести под каждый элемент определенное количество ячеек (в данном случае их 5).

В строке 12 переменную counter можно увеличить также двумя способами: либо к предыдущему значению прибавить 1, либо воспользоваться стандартной функцией Inc.

Задача 3

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

Пояснения:

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

Алгоритм действий:

  1. Создать квадратную матрицу.
  2. Присвоить переменной, ответственной за подсчет положительных элементов, значение «0».
  3. Составить цикл по созданию квадратной матрицы.
  4. Организовать цикл по проверке условия: если число на главной диагонали >0, тогда счетчик увеличивается на 1.
  5. После окончания действия цикла на экран вывести значение переменной, хранящей количество положительных элементов.

Противостояние двух языков программирования: С и Turbo Pascal

Как правило, уважающий себя программист знает несколько языков. К примеру, это могут быть С++, Turbo Pascal, Delphi, Java и т. д. Противостояние двух из них было ярко выражено еще в 80-е гг. (С и турбо паскаль). В конце ХХ века такая же борьба наблюдалась между Си++ и Java.

В виртуальном пространстве среди трех десятков языков программирования можно выделить три самые яркие пары, противостояние которых поражало величайшие умы киберпространства: алгол-60 и фортран, Pascal и C, Java и С++. Конечно, эти ощущения субъективные, но в тот или иной период один из пары был лидером. Это объяснялось требованиями промышленности и необходимости в том или ином программном продукте. В 70-х гг. «управлял миром» фортран, в 80-х - Turbo Pascal, в 90-х - С++. Конечно, ни один из них не «умер». Скорее, они преобразовались в усовершенствованные программные продукты.

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

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

Чтобы пользоваться предварительным просмотром презентаций создайте себе аккаунт (учетную запись) Google и войдите в него: https://accounts.google.com


Подписи к слайдам:

Тема урока: Циклы с параметром

Циклом называется такая алгоритмическая структура, в которой серия команд (тело цикла) выполняется многократно. При решении некоторых задач вычислительный процесс имеет циклический характер. Это означает, что часть операторов многократно выполняется при разных значениях переменных. В Pascal имеется три вида операторов цикла: 1) цикл с параметром или цикл типа for , 2) цикл с предусловием или цикл типа while , 3) цикл с постусловием или цикл типа repeat ... until . Операторы цикла в Pascal

Оператор цикла с параметром Оператор цикла с параметром используется в тех случаях, когда заранее известно, сколько раз должна повторится циклическая часть программы. Тело цикла i = i1, i2 Формат оператора: for параметр:= i1 to i2 do Здесь: for (для), to (до), do (выполнить) - служебные слова; - переменная целого типа; i1 – начальное значение, i2 – конечное значение параметра - это выражения или числа целого типа; - простой или составной оператор - тело цикла.

Оператор цикла с параметром f or i:= to do begin операторы циклической части программы end Здесь i - параметр цикла; Выполнение оператора: Циклическая часть программы выполняется при каждом значении параметра цикла i от его начального значения до конечного значения, с увеличением параметра с каждым повторением цикла на 1. Если значение параметра должно уменьшаться с каждым повторением цикла на -1, то нач. значение должно быть больше конечного и формат оператора должен быть следующим: for i:= downto do begin операторы циклической части программы end

Переменные оператора цикла должны быть определены до входа в цикл; Повторяющиеся вычисления записываются всего один раз внутри цикла; Вход в цикл возможен только через его начало; Нельзя самим изменять значение параметра (счетчика) внутри цикла; Передавать управление внутрь цикла нельзя! Передавать управление из цикла – можно по оператору перехода goto . Это необходимо помнить!

Составление и выполнение программ циклической структуры

program STEPEN ; var i,n:integer;a,y:real ; begin writeln ("Возведение в степень "); write ("Введите основание a >>"); readln (a); write ("Введите показатель n >>"); readln (n); y:=1; for i:=1 to n do y:= y*a ; writeln ("y=", y) end . Конец Начало Список данных i , n – цел a, y- вещ y:= 1 y:= y * a Вывод y Ввод a , n i = 1, n Программа, которая возводит в указанную степень основание.

Задача 1. Составьте программу вычисления суммы элементов ряда с 1 по 20: где i - порядковый номер элемента, - формула для вычисления элемента ряда. Программа: program Summa ; var i:integer; S: real ; begin writeln ("Вычисление суммы ряда "); S:= 0 ; for i:=1 to 20 do S:=S+ (7 * i - 2) ; writeln (‘ S =", S) end .

Задача2. Составьте программу вычисления произведения 9-ти элементов ряда: где i - порядковый номер элемента, - формула для вычисления элемента. Программа: program Prouzvedenie ; var P , i: integer ; begin writeln ("Вычисление произведения "); P:= 1 ; for i:= 1 to 9 do P:=P* (2 * i +1) ; writeln (‘ P =", P) end .

Задача 3. Составьте программу вычисления значений функции Y = x 2 – 3 x – 7 , при изменении аргумента х от 1 до 15 с шагом 1 . Вывод значений аргумента и функции организуйте в виде двух столбцов: х =… у =… х =… у =… program Tabulirovanie var Y , X: integer ; B egin writeln ("Вычисление значений функции "); for X:= 1 to 15 do Begin Y: = X *X -3*X-7 ; writeln (‘ X =", X:6, ‘Y =‘, Y) End E nd .

Задача 4. Составьте программу, которая вычислит и напечатает столбец таблицы умножения числа 8 на число К, которое изменяется от 1 до 10. Вывести на печать в виде: 8 * 1 = 8 ………….. 8*10 = 80 program Stolbez var K , P: integer ; B egin writeln (‘столбец таблицы умножения "); for K:= 1 to 10 do Begin P: = 8*K; writeln (‘ 8* ", K , ‘=‘, P) End E nd .

Сегодня я узнал… Было интересно… Было трудно… Я выполнял задания … Я научился… У меня получилось … РЕФЛЕКСИЯ Ребята, давайте каждый из вас выскажется одним предложением о том, как для вас прошел текущий урок, выбирая начало фразы из рефлексивного экрана на доске:

Задание на дом: 1). Выучить конспект урока. 2). Выполнить задания: Задача 1. Составьте программу вычисления произведения 10 элементов ряда: где i - порядковый номер элемента. Задача 2. Составьте программу вычисления функции при изменении аргумента х от 0 до 6 Вывод значений аргумента и функции организуйте в виде двух столбцов: х =… у =…




Рекомендуем почитать

Наверх