В прошлом уроке мы познакомились с понятием цикла в программировании и разобрали два вида из них – цикл с предусловием и постусловием. Я постарался максимально доступно описать, как пользоваться ими.
Как вы поняли, циклы с пред и постусловием помогают решить массу задач. Тем не менее, иногда мы точно знаем, сколько раз будет выполняться тот или иной цикл. В этом случае следует использовать цикл с параметром.
Помните аналогию с отжиманиями? Нам там нужно было отжаться 30 раз. Иными словами, мы знаем количество отжиманий наперед, поэтому нам выгоднее использовать цикл с параметром.
Его синтаксис такой:
for (начальное значение цикла (с возможным объявлением;условие;приращение)
Если несколько выражений
Несмотря на то, что объявление выглядит громоздким, использовать такой цикл очень удобно. Давайте продемонстрируем это на примере с отжиманиями:
int i=0; for (; i < 30;i++,Console.WriteLine («Вы сделали отжиманий»,i));
Кстати, как вы могли заметить, я часто привожу участки кода. Я не хочу загромождать страницу ненужной информацией, поэтому привожу саму суть. Если вы хотите скомпилировать программу, то набирайте этот код в теле метода Main.
Цикл с параметром | Информатика Паскаль #13 | Инфоурок
Итак, давайте рассмотрим, что мы сделали. Обратите внимание на то, что я объявил переменную i вне скобок for. Я это сделал для того, чтобы можно было использовать i уже дальше в программе. Сейчас время сделать маленькое лирическое отступление.
Дело в том, что в сишной программе переменная будет делиться так или иначе на две группы – локальные и глобальные. Хотя в C# глобальных переменных нет (если сравнивать их с аналогиями в C++ и C), тем не менее, есть такие переменные, которые можно использовать в любом месте вашего класса. Это так называемые члены- класса. Более подробно мы это рассмотрим, когда будем изучать ООП.
В противовес им существуют локальные переменные. Они живут относительно небольшой промежуток времени в относительно небольшом участке кода. Для чего они нужны? Для ускорения работы программы. Дело в том, что локальные переменные заносятся в программный стек и оттуда их быстро извлечь.
Если вам это пока непонятно, то вам стоит подождать, когда я буду писать о стеке.
Локальные переменные входят в методы, в тела условий и циклов, наподобие того, что мы сейчас рассмотрели. Особенность локальной переменной заключается в том, что она известна только в том участке кода, где мы ее используем. Это означает, что, например, в реализации нашего цикла таким образом (это, обычно, так нужно делать):
for (int i=0; i<30;i++); Console.WriteLine (i);
Уроки 2, 3. Цикл с параметром
Пример 1. Сто раз написать свое имя на экране в строчку
Программа: Program Z_1; Var i: integer; Begin For i: = 1 to 100 do Write (‘Имя ’); Readln End. Пример 2.Вывести на экран таблицу перевода из градусов по шкале Цельсия в градусы по Фаренгейту, для значений от 15 до 30, шаг 1 градус. Формула перевода из Цельсия в ФаренгейтыF=(c*1.8)+32. ProgramZ_2; Var c: integer; F: real; Begin For c: = 15 to 30 do begin f:= (c*1.8) +32; writeln (c,’ ‘,f); end; Readln End.
Python. Цикл с параметром
Пример 3. Написать программу, которая выводит таблицу квадратов первых пяти целых положительных нечетных чисел в обратном порядке Program Z_3; Var x,y,i: integer; Begin Writeln(‘таблица квадратов нечетных чисел’); Writeln(‘————————-‘); Writeln(‘число’, ,’квадрат числа’); Writeln (‘————————-‘); For i: = 5 downto 1 do begin y:= sqr (x) writeln (x,y,); end; Writeln(‘————————-‘); Readln End. Самостоятельная работа. Ребята за компьютерами решают следующие задачи:
Проверить, является ли целое число простым. | Uses crt; Var n,i:integer; Begin Readln(n); For i:=2 to n-1 do If n mod i =0 then begin writeln(n,’не простое’);readkey; halt;end; writeln (n, ‘простое’); readkey; end. |
Написать программу, которая выводит на экран табл. умножения, например на 7. | Uses crt; Var m,n,p:integer; Begin For i:=1 to 10 do Writeln(7,’*’,I:2,’=’,7*I:2); Readkey; end. |
Написать программу, которая выводит табличные значения функции у=x+2. Диапазон изменения аргумента от – 4 до 4, приращение аргумента — 0.5 | uses crt; var x,y:real; begin; clrscr; writeln(‘y’:20,’ : ‘,’x’:5); writeln(‘ —————‘); x:=-4; repeat y:=abs(x)+2; writeln(y:20:1,’ : ‘,x:5:1); x:=x+0.5; until x>4; readkey; end. |
Написать программу, которая определяет максимальное число из введенной последовательности положительных чисел. Завершение ввода – 0. | Uses crt; Var a, m:integer; Begin M:=0; Repeat Writeln(‘введи число’);Readln(a); If a>m then m:=a; Until a=0; Writeln(‘max=’,m); Readkey; end. |
Написать программу, которая позволяет найти наибольший общий делитель двух целых чисел | program nod; uses crt; var n1,n2,nod: integer; begin clrscr; writeln (‘Введите два целых числа’); readln (n1,n2); while n1<>n2 do if n1>n2 then n1:=n1-n2 else n2:=n2-n1; nod:=n1; writeln ‘Наибольший общий делитель -‘,nod); readkey;end. |
Написать программу, которая позволяет найти наименьшее общее кратное двух целых чисел | program nok1; uses crt; var nok,n1,n2:byte;i:word; begin clrscr; writeln(‘введите два числа’); readln(n1,n2); nok:=1; for i:=n1*n2 downto 2 do if (n1 mod i=0) and (n2 mod i=0) then nok:=i; write(‘NOK -‘,nok); readkey;end. |
Домашнее задание: Написать программу, которая выводит табличные значения функции у=х 2 +2. Диапазон изменения аргумента от – 4 до 4, приращение аргумента 1 Урок 4, 5. Цикл с предусловиемЦель урока: изучить оператор цикла WHILE языка программирования Pascal, синтаксис, семантику, а также научить учащихся использованию данного оператора при решении задач. Задачи урока:
- образовательные:
- усвоение учащимися оператора цикла с предусловием и области его применения;
- формирование умений и навыков записи оператора WHILE на языке программирования Pascal;
- выработка навыков составления программ, реализующих циклические алгоритмы при решении задач;
Тип урока: урок изучения нового материала. Формы и методы обучения: словесный, наглядный, практический, проблемный – фронтальный опрос, мозговой штурм, индивидуальная работа, работа на компьютере. Оснащение урока: компьютерная презентация «Оператор цикла WHILE», мультимедийный проектор, компьютеры с инсталлированным на них пакетом Turbo Pascal, дидактический раздаточный материал. План урока
- Оргмомент. Проверка домашнего задания
- Вводное слово
- Актуализация знаний и умений учащихся
- Презентация нового материала
- Закрепление изученного материала
- Работа на компьютерах
- Заключение Задание на дом
Ход урока2. Вводное слово.Подавляющее большинство задач с циклами можно решать разными способами, используя при этом один из трех операторов цикла. Часто решения, использующие различные операторы цикла, оказываются равноценными. В некоторых случаях все же предпочтительнее использовать какой-то один из операторов.
Сегодня на уроке мы познакомимся с одним из таких операторов — оператором цикла WHILE. Цикл, который реализуется данным оператором, называют также циклом с предусловием. Почему это так, в каких случаях применяется данный оператор, и каков формат записи этого оператора вы узнаете не сегодняшнем уроке. 3.Актуализация знаний и умений учащихся.Актуализация знаний и умений учащихся осуществляется во время фронтального опроса, в ходе, которого им предстоит ответить на следующие вопросы:
- Дайте определение циклического алгоритма.
- Перечислите основные структуры циклического алгоритма.
- Приведите примеры циклических алгоритмов.
- Запишите формат оператора цикла с параметром, цикла FOR.
- Расскажите, как выполняется оператор цикла FOR.
- Что следует знать, используя, оператор цикла FOR.
- Чему будет равен x после выполнения инструкций?
X:=0; For i:= -5 to 0 do N:=i*i; X:=X+N;
- Что будет выведено на экран в результате выполнения инструкций?
N:=5; X:=0; For i:=1 to N do X:=i; Writeln(X); 9.Сколько звездочек будет выведено на экран в результате выполнения инструкций? For i:=1 to 5 do For j:=1 to 5 write (‘*’); 4. Презентация нового материала.Решите следующую задачу: Распечатать квадраты чисел, находящихся в диапазоне от 0 до 1 с шагом 0,2.
Решая поставленную задачу, в процессе рассуждений учащиеся должны сделать вывод о том, что изученный ими ранее оператор цикла с параметром (оператор FOR) не позволяет решить задачу, поскольку он изменятся с шагом 1 или -1. Учащиеся предполагают, что для решения поставленной задачи им нужно использовать какой-то другой оператор цикла. Для этого учащимся предлагается прослушать интерактивный учебный курс «Основы программирования на Turbo Pascal» – Введение в Turbo PascalОператор цикла While, составить опорный конспект – записать формат и блок-схему оператора в тетрадь и ответить на вопросы:
- В каких случаях используется оператор цикла WHILE?
- Почему цикл, записанный с помощью оператора WHILE, называют циклом с предусловием?
- Можно ли данный оператор цикла назвать универсальным?
Принцип выполнения оператора WHILE и примеры решения некоторых задач (включая задачу о квадратах чисел, предложенную учащимся для решения в начале рассмотрения темы) учитель демонстрирует в презентации «Оператор цикла WHILE»:
![]() |
WHILEУсловие выполнения циклаDOТело цикла |
Оператор цикла WHILE состоит из заголовкаителацикла. Ключевые словаWHILE и DOобозначают «до тех пор, пока» и «выполняй» соответственно. Проверка условия выполнения цикла производится в самом начале оператора – если значение условия истинно, то выполняется тело цикла и снова вычисляется выражение условия выполнения цикла. Так продолжается до тех пор, пока значение условия выполнения цикла не станет ложным. Следует знать:
- число повторений операторов цикла WHILE определяется в ходе работы программы и как, правило, заранее неизвестно;
- в операторе цикла WHILE точка с запятой никогда не ставится после зарезервированного слова DO;
- для успешного завершения цикла WHILE в его теле обязательно должны присутствовать инструкции, оказывающие влияние на условие выполнения инструкций цикла;
- инструкции тела цикла WHILE вообще могут быть не выполнены, если проверяемое условие ложно с самого начала;
- исходя из последнего утверждения, цикл WHILE считают самым универсальным видом цикла.
Вернемся к задаче – распечатать квадраты чисел, находящихся в диапазоне от 0 до 1 с шагом 0,2. Составим блок-схему и программу решения задачи:
![]() |
var k, s : integer; begin s := 0; while s |
Рассмотрим следующую задачу: для проверки физического развития проверяют рост школьников. Составьте программу, запрашивающую рост очередного школьника и вычисляющую после завершения медосмотра средний рост прошедших осмотр. Количество школьников, подлежащих медосмотру заранее не известно. Решение.
Чтобы получить средний рост С, надо знать количество школьников К и их суммарный рост S. Для вычисления величин K и S воспользуемся циклом WHILE. Однако, здесь возникает проблема, какое условие следует выбрать для завершения цикла.
Проще всего договориться – в конце рабочего дня в ответ на запрос о росте школьника ввести какое-либо фиктивное значение, например, 0. var k, s, r : integer; c : real; begin s := 0; k := 0; write (‘введите рост школьника’); readln (r); while r <> 0 do begin k := k + 1; s := s + r; write (‘введите рост школьника’); readln (r); end; c := s/k; writeln (‘средний рост школьников’,c) readln; end. 5. Закрепление изученного материала.Для закрепления изученного материала учащимся предлагается выполнить комментированные упражнения. Комментирование действий помогает учителю обнаруживать типичные ошибки и вносить коррективы в действия учеников. Составьте блок-схему и программу решения задач:
- Распечатать произведения чисел А и В, изменяющихся от 17 и -25 с шагом -3 и 5 соответственно до тех пор, пока это произведение – отрицательное число.
- Сколько слагаемых должно быть в сумме 1 + ½ + 1/3 + …+ 1/N, чтобы сумма оказалась больше 5.
6. Работа на компьютерах.Для самостоятельной работы на компьютере учащимся предлагаются три варианта заданий. Вариант 1.
- Температура С в градусах Цельсия изменяется от 0 до 100 с шагом 5. Напечатать таблицу перевода температуры из градусов Цельсия в градусы Фаренгейта (F). Формула перевода: F = 1,8 C + 32. Составьте блок-схему и программу решения задачи.
- Составьте таблицу значений функции y = 5x – 2 на отрезке [1; 20] с шагом b = 2.
- *В первый день пловец проплыл 3 км. В каждый следующий день он проплывал на 10% больше, чем в предыдущий.
- а) В какой по счету день пловец начнет проплывать более 5 км?
- б) К какому дню он суммарно проплывет более 30 км?
Вариант 2.
- Напечатать таблицу соответствия между весом в фунтах и весом в кг для значений от 1 до 10 фунтов с шагом 0,5 фунта. Формула перевода: 1 фунт = 400 г. Составьте блок-схему и программу решения задачи.
- Составьте таблицу значений функции y = 5×2 – 2x + 1 на отрезке [-5; 5] с шагом b = 2.
- *Урожай яблок в 1990 году составил 20 тонн. Далее каждые два года урожай уменьшался на 20%.
- а) Начиная с какого года, будет собрано менее 5 тонн?
- б) В каком году суммарный урожай яблок превысит 90 тонн?
Вариант 3.
- Напечатать таблицу перевода расстояний из дюймов в сантиметры для значений от 1 до 10 дюймов с шагом 0,5 дюйма. Формула перевода: 1дюйм = 2,54 см.
- Составьте таблицу значений функции y = 4×2 – 5x – 10 на отрезке [-9; 9] с шагом b = 3.
- *Концентрация хлорной извести в бассейне V м3 составляет 10 г/л. Через одну трубу в бассейн вливают чистую воду со скоростью Q м3/час, через другую трубу с такой же скоростью вода выливается. При условии идеального перемешивания концентрация хлорной извести изменятся по закону C = C0e-Qt/V , где t – время, C0 – начальная концентрация.
- а) Определить, через какое время концентрация хлорной извести в бассейне достигнет безопасной для человека величины. Задачу решить при Q = 150 м3/час, V = 10000 л, C0 = 10 г/л, t изменяется с шагом 0,5.
- б) Напечатать таблицу изменения концентрации хлорной извести для интервала времени от 0 до 5 часов с шагом 0,5 часа.
7. Заключение.Подводятся итоги уроки, анализируется и оценивается работа каждого ученика.
Источник: studfile.net
Программирование. Циклы с параметром
Особенное место в 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 задачи, в которых разбираются алгоритмы работы и даются пояснения и комментарии к каждому решению.
Дан двумерный массив натуральных чисел в диапазоне [0..199], выбранных случайно. Найти количество всех двузначных чисел, сумма цифр которых кратна 2.
- Создать двумерный массив.
- Проверить каждое число на соответствие условиям:
b) выделить вторую цифру числа посредством деления через mod;
c) сложить выделенные цифры;
d) поделить посредством mod заданную сумму на 2;
e) если результат будет равен 0, то счетчик увеличивается на 1.
Дан одномерный массив целочисленных элементов. Найти количество положительных чисел.
- Создать массив целочисленных элементов, созданных посредством randomize.
- В цикл с параметром вложить условный оператор IF, который будет проверять заданный элемент на соответствие условию: Х>0.
- Если условие выполняется, то счетчик увеличивается на 1.
- После цикла следует вывести на экран получившееся значение счетчика.
Данные, указанные в скобках <>, являются комментариями. В строке 11 можно вывести массив на экран двумя способами: оставить пробел между числами либо отвести под каждый элемент определенное количество ячеек (в данном случае их 5).
В строке 12 переменную counter можно увеличить также двумя способами: либо к предыдущему значению прибавить 1, либо воспользоваться стандартной функцией Inc.
Дана квадратная матрица. Найти количество положительных элементов, находящихся на главной диагонали.
В массиве чисел главная диагональ тянется из верхнего левого угла в правый нижний. Особенностью ее является тот факт, что индексы строки и столбца совпадают. Поэтому достаточно организовать 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 (Старый Свет) пользовались результатами наработок американских ученых, в то время как в Новом Свете активно применяли итоги исследований европейских специалистов. В Европе разработчики ратуют в большей степени за чистоту и компактность языков программирования, а американские умы склоняются больше к использованию новомодных веяний в написании кода.
Источник: fb.ru