В Паскале можно использовать три конструкции для организации циклов, они известны по именами:
В этом уроке — мы познакомимся с первый из них — циклом For.
Цикл For — схема работы
Цикл For также называют циклом с известным числом повторений.
Он обладает следующей структурой (изобразим её на блок-схеме):
Как видим на схеме, в цикле for имеются:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10
Сразу же приведём пример кода программы, цикл в которой соответствует блок схеме на рисунке выше:
var i, a:integer; begin for i:=1 to 10 do begin // начало тела цикла (у нас в нём будет 3 операции, как на блок-схеме выше) a := i; // получаем очередное значение счётчика (первый раз оно будет равно 1, а последний раз = 10) a := a + 2; // прибавляем к значению 2 write(a, ‘ ‘); // выводим с пробелом после значения end; // конец тела цикла readln(); end.
— здесь в теле программы тоже три операции (но уже конкретные) и тот же диапазон значений счетчика, что и на блок-схеме. Запустите программу и посмотрите на результат.
Блок-схема | Цикл for
Далее рассмотрим примеры решения задач, чтобы лучше понять как работает цикл for.
Если правая граница счётчика меньше левой — downto
Если правая граница для счётчика цикла меньше чем левая то необходимо использовать вместо конструкции:
for i:= to do
for i:= downto do
Разбор практических примеров
Пример №1 — использование значений счетчика
Вывести на экран все числа от 1 до 125.
var i:integer; begin for i:=1 to 125 do write(i, ‘ ‘); // выводим значения счетчика через пробел readln(); end.
— так как нам нужно было повторять только действие вывода, то в теле цикла мы разместили одну операцию, а потому операторные скобки для тела цикла не нужны.
Пример №2 — условный оператор внутри цикла
Вывести на экран все нечетные числа от 37 до 1025.
Здесь для решения в сравнении с решением предыдущей задачи просто изменим диапазон значений счетчика и добавим в тело цикла условный оператор с проверкой остатка от деления на $2$:
var i:integer; begin for i:=37 to 1025 do // i пройдёт значения от 1 до 1025 if ((i mod 2) = 1) then // если очередное значение счётчика делится на 2 с остатком write(i, ‘ ‘); readln(); end.
— обратите внимание, что здесь тоже не используются операторные скобки для окружения тела цикла. Дело в том, что вложенным в непосредственно в блок цикл for является только один условный оператор if, а вызов стандартной процедуры write() вложен уже в if, а не непосредственно в for, а потому в данном случае считается, что в теле цикла for находится только одна операция (for) и, следовательно, операторные скобки не обязательны.
Пример №3 — downto
Задача:
Выведите на экран все число от 133 до 57.
Решение (тут всё просто):
var i: integer; begin for i:=133 downto 57 do write(i, ‘ ‘); readln(); end.
Пример №4 — downto и цикл в одной из веток условного оператора
Пользователь вводит целое число, если оно больше $8$ выведите на экран все числа от этого числа до $5$ (в обратном порядке), иначе сообщите об ошибке.
var i, a: integer; begin writeln(‘vvedite celoe chislo’); readln(a); if (a > 8) then for i:=a downto 5 do // цикл вложен в ветку then условного оператора. write(i, ‘ ‘) // перед else ‘;’ не ставится else writeln(‘oshibka! vashe chislo ne > 8.’); readln(); end.
Пример №5 — условный оператор с составным условием внутри цикла
Выведите на экран, все четные числа, делящиеся на 7 нацело, лежащие в диапазоне от 28 до 117.
Решение:
В этой задаче нам необходимо перебрать все числа от 28 до 117 (будем делать это циклом), проверяя каждое число, на соответствие сразу двум условиям:
- является четным — т.е. по сути делится на 2 нацело;
- делится нацело на 7;
Так оба условия для выводимого числа нужно проверять одновременно (они должны выполняться одновременно— только тогда его можно выводить), то будем использовать логическое И.
Третье же условие принадлежности диапазону будет гарантировать сам цикл for — так как мы будем перебирать только числа из этого диапазона, а потом в услвоном операторе проверять его не нужно, в качестве очередного числа используем счетчик цикла:
var i:integer; begin for i:=28 to 117 do // цикл по диапазону [28..117] if ((i mod 2) = 0) AND ((i mod 7) = 0) then write(i, ‘ ‘); readln(); end.
Пример №6 — логические выражения, условия внутри цикла + анализ условия
Выведите на экран, все четные числа от 35 до 117 и все числа, делящиеся на $5$ нацело, лежащие в диапазоне от 45 до 178.
Указание: сначала можно решить задачу двумя циклами, но потом перепишите с использованием одного цикла, в теле которого составьте логическое выражение, описывающее подходящие числа (используйте логические операции).
Решение двумя циклами:
Решить двумя циклами проще — достаточно пройтись по двум числовым «отрезкам» (диапазонам) сначала циклом по диапазону [35..117], а потом по диапазону [45..178]. Внутри тел циклов надо проверять условия, которые написаны в задаче с помощью условного оператора.
var i:integer; begin for i:=35 to 117 do // цикл по [35..117] if ((i mod 2) = 0) then // если четное write(i, ‘ ‘); writeln(); // перенос строки, чтобы было понятно где начался новый цикл for i:=45 to 178 do // цикл по [45..178] if ((i mod 5) = 0) then // если делится на 5 write(i, ‘ ‘); readln(); end.
— заметьте, что в этом решении числа выводится не по порядку, что не очень хорошо. В следующем решении мы это исправим.
Решение одним циклом:
Чтобы решить задачу одним циклом (используя единственную конструкцию for), нам стоит заметить, что отрезки [35..117], а потом по диапазону [45..178] пересекаются — так как:
$35 lt 45 lt 117 lt 178$
— это значит, что мы можем просто перебрать все числа от 35 до 178, и:
- сначала проверяя какому отрезку они принадлежат,
- а потом какое условие требуется для вывода чисел из этого отрезка,
— вывести только то, что нам нужно.
Приведём код, решающий задачу одним циклом:
var i:integer; begin for i:=35 to 178 do // цикл по диапазону [35..178] begin if ((i >= 35) AND (i = 45) // если принадлжит отрезку [45..178] AND ((i mod 5) = 0)) then // если делится на 5 write(i, ‘ ‘); end; readln(); end.
— здесь внутри тела цикла стоит два независимых условных оператора, числа при выводе упорядочены, но есть дублирование, так как например 50 и четное и делится на 5 и находится на пересечении диапазонов.
Чтобы избежать дублирование надо сделать так, чтобы для каждого очередного числа из значений $i$ положительно выполнялось максимум одно условие — тогда очередное значение $i$ либо будет выведено один раз либо не будет выведено вообще.
Поэтому сделаем проверку второго условия, альтернативой на случай неуспеха первого — для чего введём ветку ложности в первый условный оператор и вложим в неё второй (это потребует совсем незначительных правок):
var i:integer; begin for i:=35 to 178 do // цикл по диапазону [35..178] begin if ((i >= 35) AND (i = 45) // если принадлежит отрезку [45..178] AND ((i mod 5) = 0)) then // и если делится на 5 write(i, ‘ ‘); end; readln(); end.
— заметьте, что во вложенном в else условии проверяется только левая граница диапазона [45..178] — это связано с тем, что значения $i$ в заголовке цикла итак ограничены сверху числом 178.
Пример №7 — Цикл внутри веток условного оператора
Если переменная a больше 5, то выведите на экран все числа от 1 до 10,
иначе все числа от 12 до 7 в обратном порядке
var i, a: integer; begin writeln(‘Введите значение переменной:’); readln(a); if (a>5) then for i:=1 to 10 do write(i, ‘ ‘) else for i:=12 downto 7 do write(i, ‘ ‘); readln(); end.
Видео-пояснения
Для этого урока есть следующие видео:
- Цикл For, Разбор: заголовок и тело, Примеры — Часть 1
- Разбор для детей и не только:Цикл FOR в Паскале — Часть 1
Самостоятельная работа
Вопросы
- Зачем нужен цикл for?
- Что такое заголовок цикла?
- Что такое счетчик цикла?
- Что такое тело цикла?
- Переменной $i$ в цикле for левую границу установили в $5$, а правую в $12$ — сколько раз выполнится цикл?
Задачи
- Выведите на экран, все числа N единиц (число задает пользователь), например, для N=2, должно быть выведено::
для N=9, должно быть выведено:
-
Если первое меньше второго, то в порядке возрастания, пример консоли:
1 5 ответ: 1 2 3 4 5
5 3 ответ: 5 4 3
Проверить решение для пар значений:
10 20
— должны увидеть все числа от 10 до 20, и для:
20 10
— все числа от 20 до 10 в обратном порядке
var i, a: integer; begin readln(a); for i:=1 to 10 do if (a>2) then write(‘*’) else write(‘#’); readln(); end.
Key Words for FKN + antitotal forum (CS VSU):
- Паскаль цикл for
- Паскаль for downto пример цикла
- Паскаль учебник для начинающих с нуля онлайн примеры
- Паскаль цикл с известным числом повторений
- Паскаль Вывод в консоль цичел из диапазона
- Паскаль повтор кода в цикле
- Паскаль что такое цикл пример
Источник: fkn.ktu10.com
Организация циклов в языке программирования Паскаль.
Презентация предназначена для проведения уроков программирования на языке Паскаль в 9 классе. В ней представлены все виды организации циклов на языке Паскаль. Здесь очень доступно объяснено, чем отличается использование различных видов циклов на языке Паскаль, объяснение строится на разборе примеров решения задач на языке Паскаль.
Вы уже знаете о суперспособностях современного учителя?
Тратить минимум сил на подготовку и проведение уроков.
Быстро и объективно проверять знания учащихся.
Сделать изучение нового материала максимально понятным.
Избавить себя от подбора заданий и их проверки после уроков.
Наладить дисциплину на своих уроках.
Получить возможность работать творчески.
Просмотр содержимого документа
«Организация циклов в языке программирования Паскаль. »
Организация циклов в языке программирования Паскаль.
Циклом называется последовательность многократно повторяющихся действий.
- При решении алгоритмических задач может возникнуть необходимость повторить одни и те же действия несколько раз. Такие действия называют циклическими или циклами.
- Процесс называется циклическим, если вычисления в нём многократно повторяются по одним и тем же формулам при разных значениях входящих в них переменных.
- Алгоритмическая структура “Цикл” обеспечивает многократное выполнение некоторой последовательности действий, которая называется телом цикла .
В Паскале различают циклы:
- 1) с неопределенным числом повторений ; здесь различают цикл с пред-условием (цикл “Пока”) и цикл с пост-условием (цикл “До”).
- 2) с определённым числом повторений (цикл с параметром, или цикл со счетчиком, или цикл “Для”);
В Паскале существуют 3 вида циклов :
- цикл с пред-условием
- цикл с пост-условием
- цикл с параметром
ОТЛИЧИЕ — СПОСОБ ПРОВЕРКИ ОКОНЧАНИЯ ЦИКЛА.
Операторы цикла
1. Цикл с пред-условием
While do Begin
Блок-схема цикла While
Замечания:
- Если в теле цикла записано более одной команды, то тело цикла заключается в операторные скобки begin и end.
- Число повторений инструкции цикла while определяется ходом выполнения программы.
- Инструкция цикла while выполняется до тех пор, пока условие, записанное после слова while, истинно.
- После слова while надо записывать условие продолжения (выполнения) цикла.
- Для завершения цикла while в теле цикла обязательно должны присутствовать инструкции, влияющие на условие выполнения инструкций цикла.
- Цикл while – цикл с предусловием, т.е. инструкции тела цикла вообще могут быть не выполнены.
- В цикле while проверка условия выхода из цикла выполняется в начале цикла.
Пример : Найти сумму всех чётных чисел от 20 до 40.
Введём обозначения: 1) формула суммы S:=S+слагаемое, где начальное значение суммы S=0;
2) получение очередного чётного числа K:=K+2, где начальное чётное число K=20
Программа на Паскале:
Операторы цикла
2. Цикл с пост-условием
Блок-схема цикла Repeat
Замечания:
- Зарезервированные слова repeat и until обрамляют тело цикла, поэтому дополнительные пары операторов begin и end уже не обязательны.
- Число повторений цикла repeat определяется ходом выполнения программы.
- Цикл repeat выполняется до тех пор, пока условие, стоящее после слова until, ложно.
- После слова until записывается условие завершения цикла (оно противоположно для условия продолжения цикла).
- Для завершения цикла repeat в теле цикла обязательно должны быть инструкции, выполнение которых влияет на условие завершения цикла.
- Цикл repeat – цикл с постусловием, т.е. тело цикла выполняется хотя бы один раз.
40; writeln(‘S= ’,S); Readln; end.» width=»640″
Пример : Найти сумму всех чётных чисел от 20 до 40.
Пример – тот же, но с циклом Repeat:
:= to do Begin ; ; ; . . . End; 2) с убыванием переменной цикла: For переменная := down to do Begin ; ; ; . . . End;» width=»640″
Операторы цикла
3. Цикл с параметром.
Синтаксическая запись цикла с параметром (цикл “Для”) имеет два варианта:
1) с возрастанием переменной цикла:
For переменная := to do
2) с убыванием переменной цикла:
For переменная := down to do
Блок-схема цикла For
Замечания:
- Цикл For используется для организации циклов с фиксированным, определяемым во время разработки программы, числом повторений.
- Количество повторений цикла определяется начальным и конечным значениями переменной-счётчика (т.е. параметром).
- Переменная – счётчик должна быть целого типа.
- Идентификатор(переменная), начальное и конечное значение переменной должны быть одного и того же порядкового типа.
- Оба выражения (начальное и конечное значение переменной) вычисляются перед выполнением оператора цикла и не должны изменяться внутри оператора цикла.
- После окончания цикла значение параметра цикла не определено, т.е. нельзя считать, что з начение параметра равно значению второго выражения.
Пример : Напечатать таблицу квадратов чисел от 20 до 30.
Write(‘ X ’, ‘ Y ‘); writeln;
For X:=20 to 30 do
Y:=X*X; Write(X:4, Y:4); writeln;
Примечание: на вывод значений X и Y отводится по 4 позиции.
Общая схема циклов в Паскале
Задания для практической части
Пример 1 : Вычислить произведение первых N целых положительных чисел. Количество чисел вводится с клавиатуры. Пример 2 : Напечатать таблицу стоимости порции сыра весом от 100 до 1000 граммов с шагом 50 граммов. Цена килограмма сыра задаётся с клавиатуры в процессе исполнения программы. Пример 3 : Вычислить сумму ряда чисел
Пример 1 : Вычислить произведение первых N целых положительных чисел. Количество чисел вводится с клавиатуры.
Var N,X,P: integer;
Writeln(‘ введите количество чисел N ‘); readln(N);
Begin P:=P*X; X:=X+1; end;
Writeln(‘произведение‘, N, ‘ чисел равно ‘, P);
1000; Readln; End. Примечание: стоимость каждой порции сыра в граммах выводится с новой строки и в формате руб.,коп.» width=»640″
Пример 2 : Напечатать таблицу стоимости порции сыра весом от 100 до 1000 граммов с шагом 50 граммов. Цена килограмма сыра задаётся с клавиатуры в процессе исполнения программ ы.
Var m: integer; t,s: real;
Writeln(‘Введите цену за килограмм сыра’); readln(t);
Writeln(‘ Масса ‘, ‘ Стоимость ‘);
Примечание: стоимость каждой порции сыра в граммах выводится с новой строки и в формате руб.,коп.
Источник: kopilkaurokov.ru
PHP — операторы повтора
В программировании есть возможность выполнять определенный участок кода несколько раз. Это необходимо при отображении одинаковых (или похожих) элементов кода, при поиске элементов, значений, сортировке и т.д.
В этом уроке мы подробно разберем следующие темы:
Структура (синтаксис):
for
while
do-while
Прерывание (break)
Блок-схема цикла с предусловием
Блок-схема цикла с постусловием
Прежде, чем начать урок, хотим отметить, что все предыдущие уроки по программированию тесно связаны с этой темой. Поэтому если Вы еще не знаете, как работают условия, рекомендуем ознакомиться с предыдущим материалом.
PHP — цикл for
Общая структура выглядит следующим образом:
Первый параметр в круглых скобках отвечает за начальное значение переменной. Можно через запятую указать несколько переменных:
Второй параметр определяет при каком условии цикл будет выполняться.
В нашем случае вывод переменной $i происходит до тех пор, пока переменная $i меньше, либо равна 0. После этого цикл завершится, а в браузере появится список чисел от 0 до 10.
Третий позволяет запустить действие после выполнения операций, заданных в теле цикла. В нашем случае переменная $i увеличивается на 1.
Однако, все эти параметры не являются обязательными. В любое время их можно опустить:
В цикле нет условий, но выполняться он будет, неизвестно, до какого времени или условия. Такой цикл называется бесконечным.
При необходимости, счетчик может не только увеличиваться, но и уменьшаться в обратном порядке:
Если необходимо увеличивать счетчик через произвольное значение (например, 10), можно воспользоваться следующим вариантом:
Как видим, действия $i=$i+10 и $i+=10 выполняются абсолютно одинаково. Они отличаются от действия $i++ лишь тем, что оно позволяет увеличивать значение переменной только на 1.
PHP — цикл while
Общая структура выглядит следующим образом:
Этот цикл состоит из условия, заключенного в круглые скобки. Он будет выполняться при истинности этого условия. Читается обычно следующим образом: «Пока переменная a меньше переменной b, выполнить. «
Еще этот while называют циклом с предусловием. Разница видна в следующем примере:
Так как условие не является истинным (3 не меньше, чем ноль), то цикл ни разу не выполнится.
PHP — цикл do-while
Структура очень похожа на предыдущую (while), с одним лишь отличием — в начале ставится ключевое слово do, а while указывается в самом конце:
Его довольно часто называют циклом с постусловием, так как он обязательно хотя бы один раз выполняется:
В этом примере вначале отображается цифра 4, а потом происходит сравнение чисел (4 и 0), и цикл завершается.
break (прерывание цикла)
В случае, если оператор повтора необходимо прервать (остановить) в определенном месте, используется функция break:
Таким образом в браузере мы увидим только цифру 5. После этого программа выйдет из цикла, и он сразу завершится.
Но что, если поменять строку echo и break местами?
В этом случае в браузере ничего не отобразится, так как сначала цикл завершится, а вывести ничего не успеет.
При использовании нескольких (вложенных) циклов, функция break завершает только один цикл, внутри которого она и находится:
Break действует на все виды циклов.
Блок схема цикла с предусловием (while)
Так как цикл имеет условие, логично обозначить его в виде ромба, а тело цикла — в виде прямоугольника. Для обозначения повтора, прямоугольник обратно соединяется с ромбом. Если выражение условия становится ложным — цикл завершается.
Блок схема цикла с постусловием (do-while)
Данная схема очень похожа на предыдущую с одним нюансом — сначала выполняется код в теле цикла (обозначен прямоугольником). Затем проверяется условие. Если оно истинно — всё повторяется, если нет — завершается.
Задания:
- Найти квадрат нечетных чисел.
- Найти сумму делителей числа a.
- Проверить, является ли число совершенным (равным сумме всех его делителей).
- Выяснить, является ли введенное число неполным (делится только на себя и на единицу)
Ответы к заданиям предыдущей статьи (про условный оператор if):
- Дан номер месяца (1-12). Отобразить в виде слова этот месяц. Если такого месяца не существует — отобразить ошибку.
Эта задача имеет несколько способов решения. Через условия делается очень просто: проверяем, ввел ли пользователь цифру 1. Если да (условие истинно) — выводим январь. Если нет — проверяем, ввел ли пользователь цифру 2 и т.д. В конце, если пользователь ничего не ввел — выдаем ошибку.
Пусть за введенное пользователем число отвечает переменная $n. Тогда программа будет выглядеть следующим образом:
- Найдите среднее арифметическое, состоящее из 5 чисел.
Так как даны 5 чисел, значит понадобятся 5 переменных. Находим в Интернете формулу для вычисления среднего арифметического значения (для его нахождения необходимо сложить все числа и разделить на их количество). Получилась следующая простая программа:
Опубликовано: 2018-10-30 15:08:28
Источник: fortran-new.ru