Вредоносное ПО (malware) - это назойливые или опасные программы,...
ПЛАН-КОНСЕКТ УРОКА
ПО ИНФОРМАТИКЕ И ИКТ
В 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
Использование инструкции 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
Примечание : обратите внимание, что поток вывода в строке 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
Чтобы элементы массива можно было изменять – переменная s должна быть ссылочной переменной (как в примере выше). Если переменная не является ссылкой, то данные будут копироваться. Для автоматического выведения типа в этом цикле используется спецификатор auto . range-based for имеет ограничение на работу с динамическими массивами: он не поддерживает изменение размера массива, так как содержит фиксированный указатель конца массива. При работе с массивами, имеющими фиксированный размер, диапазонный for является прекрасной и безопасной альтернативой обычному for .
Вложенные циклы for
Так же, как и другие инструкции циклов, for поддерживает структуру вложенных циклов. Применение вложенных циклов for для организации ввода и вывода двумерных массивов выглядит гораздо компактнее, чем при использовании цикла while .
Однако, при решении задач обхода таких массивов, необходимо избегать применение условной инструкции if . Зачастую, задачу можно реализовать более рационально, путем манипуляции индексами (переменными цикла i и j). То есть, поставить в зависимость изменение одного индекса, от значения величины другого. Рассмотрим два примера.
Программа 9.4
Дана квадратная матрица размера n, элементы которой равны 0. Заполнить элементы, лежащие ниже и на самой главной диагонали единицами.
#include
Программа 9.5
Составить программу заполнения массива числами треугольника Паскаля и вывода этого массива. Треугольник паскаля имеет вид:
В этом треугольнике на вершине и по бокам стоят единицы (в программе 9.5 треугольник “положен на бок” – стороны треугольника: первый столбец и главная диагональ). Каждое число равно сумме двух чисел, расположенных над ним. Строки треугольника симметричны относительно вертикальной оси и содержат биноминальные коэффициенты.
#include
Вопросы
- Может ли быть заменена в программе инструкция цикла for на инструкцию цикла while? Всегда ли это можно сделать?
- Когда удобнее применять для организации циклов инструкцию for? while?
- Возможны ли в заголовке инструкции 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;) ?
- Переменная i – параметр внешнего цикла, а j – вложенного. Доступна ли будет переменная j во внешнем цикле? i во вложенном цикле?
Учебник
Домашняя работа
- Зад. 29. Напишите программу, в которой вводятся натуральные числа a и b , а на дисплей выводятся все простые числа в диапазоне от a до b (идея алгоритма Программа 8.5)
- Зад. 30. Совершенным называется число, равное сумме всех своих делителей, меньших его самого (например, число 6 = 1 + 2 + 3). Напишите программу, которая вводит натуральное число N и определяет, является ли число N совершенным.
- Напишите программу, которая выводит на экран квадратную числовую таблицу размера n x n , имеющую следующий вид при n = 10: 1 * * * * * * * * * * 2 * * * * * * * * * * 3 * * * * * * * * * * 4 * * * * * * * * * * 5 * * * * * * * * * * 6 * * * * * * * * * * 7 * * * * * * * * * * 8 * * * * * * * * * * 9 * * * * * * * * * * 10
Литература
- Лафоре Р. Объектно-ориентированное программирование в C++ (4-е изд.). Питер: 2004
- Прата, Стивен. Язык программирования C++. Лекции и упражнения, 6-е изд.: Пер. с англ. - М.: ООО «И.Д. Вильяме», 2012
- Липпман Б. Стенли, Жози Лажойе, Барбара Э. Му. Язык программирования С++. Базовый курс. Изд. 5-е. М: ООО “И. Д. Вильямс”, 2014
- Эллайн А. C++. От ламера до программера. СПб.: Питер, 2015
- Шилдт Г. С++: Базовый курс, 3-изд. М.: Вильямс, 2010
Тема урока «Цикл с параметром. Решение задач.»
Тип урока: урок применения знаний и умений
Вид урока: урок-практикум
Цели урока:
Образовательные
- Научиться создавать алгоритмы с конструкцией «цикл»;
- Совершенствовать умение реализации алгоритма на языке программирования;
Развивающие
- Развитие алгоритмического мышления;
- Развитие умения анализировать, выделять главное;
Воспитательные
- Воспитание умения работать в команде;
- Воспитание чувства ответственности, аккуратности, внимательности к деталям;
Задачи урока:
- Найти математическое решение задачи
- Составить алгоритм для решения
- Преобразовать алгоритм на язык программирования
- Использовать раннее пройденные операторы
Метапредметные связи
- Математика ()
- Биология? (задача про амеб)
Внутрипредметные связи:
- «Алгоритмизация»
- «Моделирование»
- «Системы счисления»
Структура урока
- Организационный момент
- Проверка материала – словарный диктант 3 мин
- Объяснение целей и задач, формирование групп для работы 2 мин
- Инструкции для работы 10 мин
- Физкультминутка 1 мин
- Самостоятельная работа по инструкциям 20 мин
- Обобщение и систематизация 1 мин
- Рефлексия 3 мин
- Оценивание 2 мин
- Домашнее задание 2 мин
Конспект урока.
Здравствуйте, садитесь. Прежде чем приступим к уроку, давайте проверим знание ключевых слов, операторов языка Паскаль. Для этого напишем словарный диктант. Листочки уже лежат у вас на столах. Тетрадки положили на край стола. (определение вариантов ). Внимание на доске написаны слова, вам надо определить их значение. Вам дается 2 мин.
Теперь проверим; правильные варианты ответов на интерактивной доске.
+ Если ответов больше правильных, то ставим в карту урока +
Теперь приступим к уроку. На прошлом уроке, мы с вами изучили новую конструкцию. Как она называется? (цикл ) А что такое цикл? (выполнение повторяющихся действий ). Скажите, а где в своей жизни вы еще сталкивались с этим понятием? (жизненный цикл, цикл смены времен года) Какой цикл изучили с вами мы? (цикл с известным количеством повторений ) Как называется такой цикл по-другому? (цикл с параметром ) А что мы будем делать сегодня на уроке? (Решать задачи ) Значит, как можно записать тему урока? (Цикл с параметром. Решение задач ). Запишем в тетради число и тему урока. Цель нашего урока: научиться использовать циклы при решении задач.
При двух и более правильных ответах ставим +
Сегодня на уроке мы с вами выполним следующие задачи:
- Рассмотреть задачи, использующие цикл с параметром
- Применить в задачах ранее изученные операторы
Приступим!
Рассмотрим следующую задачу:
Даны два целых числа a и b. Выведите на экран каждое числа из диапазона от a до b.
Составим математическую модель.
Определяем какие действия повторяются.
Теперь выстраиваем алгоритм
- начало
- Ввести a,b
- Повторить действия
- Выводим на экран число i
- Конец
Переводим на алгоритм на язык программирования
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 я не ставлю, но на следующем уроке работать надо больше.
Если вас не устраивают результаты вашего труда на уроке, вы можете подойти и взять дополнительное задание на дом, на оценку.
Итак, задачи, которые мы ставили перед собой на этот урок достигнуты?
Рассмотрели задачи на применение цикла с параметром.
Применили условный оператор, операторы целочисленного деления.
Домашнее задание на доске/
- Задание на выполнение циклического алгоритма, взятое из огэ по информатике. Ответ запишите в тетради.
- Задание аналогичное тому, что мы делали сегодня. Сдать в электронном виде.
Напишите эффективную программу, которая по двум данным натуральным числам 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.
Алгоритм действий:
- Создать двумерный массив.
- Проверить каждое число на соответствие условиям:
a) если 9 < Х < 100, то разделить его нацело на 10 посредством div;
b) выделить вторую цифру числа посредством деления через mod;
c) сложить выделенные цифры;
d) поделить посредством mod заданную сумму на 2;
e) если результат будет равен 0, то счетчик увеличивается на 1.
Задача 2
Дан одномерный массив целочисленных элементов. Найти количество положительных чисел.
Алгоритм действий:
- Создать массив целочисленных элементов, созданных посредством randomize.
- В цикл с параметром вложить IF, который будет проверять заданный элемент на соответствие условию: Х>0.
- Если условие выполняется, то счетчик увеличивается на 1.
- После цикла следует вывести на экран получившееся значение счетчика.
Данные, указанные в скобках {}, являются комментариями. В строке 11 можно вывести массив на экран двумя способами: оставить пробел между числами либо отвести под каждый элемент определенное количество ячеек (в данном случае их 5).
В строке 12 переменную counter можно увеличить также двумя способами: либо к предыдущему значению прибавить 1, либо воспользоваться стандартной функцией Inc.
Задача 3
Дана квадратная матрица. Найти количество положительных элементов, находящихся на главной диагонали.
Пояснения:
В массиве чисел главная диагональ тянется из верхнего левого угла в правый нижний. Особенностью ее является тот факт, что индексы строки и столбца совпадают. Поэтому достаточно организовать 1 цикл для перехода по строкам без перебора остальных элементов.
Алгоритм действий:
- Создать квадратную матрицу.
- Присвоить переменной, ответственной за подсчет положительных элементов, значение «0».
- Составить цикл по созданию квадратной матрицы.
- Организовать цикл по проверке условия: если число на главной диагонали >0, тогда счетчик увеличивается на 1.
- После окончания действия цикла на экран вывести значение переменной, хранящей количество положительных элементов.
Противостояние двух языков программирования: С и 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 Вывод значений аргумента и функции организуйте в виде двух столбцов: х =… у =…