Что делает инструкция n 0 repeat write

Обновлено: 20.05.2024

Delphi site: daily Delphi-news, documentation, articles, review, interview, computer humor.

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

В общем виде инструкция repeat записывается следующим образом:

// инструкции until условие где условие - выражение логического типа, определяющее условие завершения цикла.

Инструкция repeat выполняется следующим образом:

1. Сначала выполняются находящиеся между repeat и until инструкции тела цикла.

2. Затем вычисляется значение выражения условие. Если условие ложно (значение выражения условие равно False), то инструкции тела цикла выполняются еще раз.

3. Если условие истинно (значение выражения условие равно True), то выполнение цикла прекращается.

Таким образом, инструкции цикла, находящиеся между repeat и until, выполняются до тех пор, пока условие ложно (значение выражения условие равно False).

Алгоритм, соответствующий инструкции repeat, представлен на рис. 2.16.


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

В качестве примера использования инструкции repeat рассмотрим программу, которая проверяет, является ли введенное пользователем число простым (как известно, число называется простым, если оно делится только на единицу и само на себя). Например, число 21 - обычное (делится на 3), а число 17 - простое (делится только на 1 и на 17).

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

Форма приложения Простое число изображена на рис. 2.17, программа приведена в листинге 2.6.


Рис. 2.17. Форма приложения Простое число

і Листинг 2.6. Простое число unit simpler-interface

Editl: TEdit; // поле ввода числа

Label2: TLabel; // поле вывода результата

var Forml: TForml; implementation

procedure TForml.ButtonlClick(Sender: TObject); var n: integer; // проверяемое число d: integer; // делитель

d := 2; // сначала будем делить на два

until r = 0; // найдено число, на которое л разделилось без остатка label2.caption:=Edit1.text; if d = n

Помогите написать программы в паскале, с помощью 3 циклов While, Repeat. Until и For.

begin
write('N: ');
readln(n);
summ := 0;
for i := 1 to n do
if i div 2 = 0 then
summ := summ + i;
writeln(summ);
end.

2 вариант (while)
var i : Byte;
n : Byte;
summ : Integer;

begin
write('N: ');
readln(n);
summ := 0;
i := 1;
while i <= n do
begin
if i div 2 = 0 then
summ := summ + i;
i := i + 1;
end;
wrtieln(summ);
end.

3 вариант (repeat until)
var i : Byte;
n : Byte;
summ : Integer;

begin
write('N: ');
readln(n);
summ := 0;
i := 1;
repeat
if i div 2 = 0 then
summ := summ + i;
i := i +1;
until i <= n;
writeln(summ);
end.

Pascal: Занятие №3. Часть 1: Цикл с постусловием в Паскаль

Проблема 1: Как избежать ввода отрицательного числа или нуля?
Решение 1: Если вводится неверное число, то нужно вернуться назад к вводу данных (цикл).

Проблема 2: Неизвестно, сколько шагов надо сделать.
Решение 2: Надо остановиться, когда n > 0 , т.е. надо делать «до тех пор пока n не станет больше 0 ».

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

repeat оператор1; оператор2; . . .; операторN until условие

Блок-схема решения примера:

Блок-схема решения примера

Блок-схема решения примера

Цикл repeat пример на паскале

Решение на Паскале:

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

Еще одно использование цикла Repeat рассмотрим на примере с решением.

var i,n:integer; begin write ('количество раз'); readln(n); i:=1; repeat write(0); i:=i+1 until i>n end.

begin var n:=readInteger('количество знаков'); var i:=1; repeat write(0); i:=i+1 until i>n end.

Для того, чтобы реализовать цикл с конкретным числом итераций, не используя счетчик цикла, возможен упрощенный вариант с использованием цикла Loop :

// Выводить 5 раз слово "Привет!" loop 5 do begin println('Привет!'); end; // .

Задача 1. Написать программу решения задачи о печати чисел 3 5 7 9 11 13. Решите задачу дважды в одном файле: используя цикл Repeat и цикл loop (если вы его рассмотрели).

[Название файла: L3task1.pas ]

Узнать о работе оператора с постусловием в Паскале можно также из видеоурока:

Pascal: выход из цикла

Break и Continue

Для выхода из цикла предусмотрена процедура break в Паскале. Break досрочно прекращает выполнение циклов while , repeat и for .

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

Рассмотрим использование процедур выхода из цикла Continue и Break в Паскале (будем использовать цикл while ):

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

var a:integer; begin a:=1; while a<1000 do begin a:=a*2; if a=64 then continue; if a=256 then break; write(a:4); end; end.

В результате программы на экране будут напечатаны: 2 4 8 16 32 128.
Число 64 пропущено, так как при условии a=64 происходит выход из текущей итерации ( continue ) и число не выводится на экран, а при a=256 выполнение цикла прерывается окончательно ( break ), так и не распечатав число 256.

Задача 10. Решить рассмотренную задачу с процедурами break и continue для циклов repeat и for

[Название файла: L3task10.pas ]

Pascal: Занятие №3. Часть 3: Паскаль цикл for

паскаль цикл for блок-схема

Блок-схема, соответствующая циклу For:

Ну или если на простом примере:

цикл for

Паскаль цикл For: синтаксис:

Прямое направление цикла (от меньшего значения к большему):

Обратное направление (от большего к меньшему):

цикл for Паскаль

Решение на Паскале:

Оператор в теле конструкции может быть одиночным или составным оператором.

составной оператор в цикле for

Важно знать: счетчик (параметр цикла) нельзя изменять внутри тела цикла! Кроме того, нельзя менять его начальное и конечное значения.

Рассмотрим на решенном примере, как используется в Паскаль цикл for:

var i,n:integer; begin write ('количество раз'); readln(n); for i:=1 to n do write(0); end.

begin var n:=readInteger('количество раз'); for var i:=1 to n do write(0); end.

Более детально цикл со счетчиком в Паскале рассмотрен в видеоуроке:

Пример: Вывести на экран квадраты и кубы целых чисел от 1 до 8 (от a до b). Реализовать двумя способами: 1. переменная цикла должна увеличиваться и 2. переменная цикла должна уменьшаться.

цикл с счетчиком

Решение в виде блок-схемы:

Решение на Паскале:

Задача 8. Найти среднее арифметическое чисел в Паскале, числа вводятся с клавиатуры, их количество произвольно. Использовать цикл for

[Название файла: L3task8.pas ]

Задача 9. Составить блок-схему по программе нахождения среднего арифметического в pascal.

[Название файла: L3task9.pas ]

Пример: Вывести на экран квадраты и кубы нечётных целых чисел от 1 до 9.

Решение:

Табулирование функции на отрезке с заданным шагом

* Следует учесть, что эта тема не обязательна для школьного курса информатики, в основном предполагается ознакомление студентами.

Пример: На отрезке [a,b] с шагом h протабулировать функцию f(x)=x 2 +Ln|x| и вывести на печать значения этой функции.

Алгоритм:
Для решения задачи в области определения функции вводится сетка – совокупность точек:

Тогда задача сводится к вычислению функции f в точках xi, то есть нужно вычислить:

var x, a, b, f, h: real; begin writeln('отрезок от . и до . '); readln(a, b); writeln('шаг'); readln(h); x := a; while x <= b do begin f := sqr(x) + ln(abs(x)); writeln('x= ', x, ' f= ', f); x := x + h; end end.

begin writeln('отрезок от . и до . '); var (a, b):=readReal2; var h:=readReal('шаг'); var x := a; while x <= b do begin var f := sqr(x) + ln(abs(x)); writeln('x= ', x, ' f= ', f); x := x + h; end end.

Пример: Вычислить 7 значений функций

где начальное значение а=0.14х, шаг Δа=0.22

Результаты для x = 2:

var x, a, y, h: real; i:integer; begin writeln('ведите x'); readln(x); h:=0.22; a := 0.14*x; for i:=1 to 7 do begin y := (0.15*x + a)/(sqr(a)+sqr(x)); writeln('a =', a, ' y = ', y); a := a + h; end end.

Пример: На интервале xn≤x≤xk с шагом Δх, для каждого у из интервала уn≤y≤yk с шагом Δу вычислить значение функции f=x 2 +ln|y| .
Например:

var xn, xk, yn, yk, f, hx, hy,x,y: real; begin writeln('отрезок для x от . и до . '); readln(xn, xk); writeln('отрезок для y от . и до . '); readln(yn, yk); writeln('шаг для x'); readln(hx); writeln('шаг для y'); readln(hy); x := xn; y := yn; while x <= xk do begin while y <= yk do begin f := sqr(x) + ln(abs(y)); writeln('x= ', x, ' y= ', y, ' f= ', f); y := y + hy; end; x := x + hx; y:=yn; end end.

Задача 11:
Вычислить значение функции:

при всех х, изменяющихся на интервале [-1, 1] с шагом Δх = 0.2, и у, изменяющихся на интервале [0, 1] с шагом Δу = 0.1.
Результат:

Дополните код в местах, где стоят троеточия:

var x, y, z: real; // описание переменных begin writeln('x y z(x,y)'); x := -1.0; y := . ; // начальное значение while (x <= 1) do begin while (. ) do //запуск внутреннего цикла begin z := sin(x) + cos(y); write(' x=', x:3:2, ' y=', y:3:2, ' z=', z:3:2 ); y := y + . ; writeln(); end; writeln(); x := . ; // изменение параметра х на шаг y:= 0; end end.


[Название файла: L3task11.pas ]

Exit и Halt

Процедура halt в pascal завершает работу программы.

Потренируйтесь в решении задач по теме, щелкнув по пиктограмме:

Строковый тип данных в Паскаль

Для решения следующей задачи нам пригодится работа со строковым типом данных.
Рассмотрим как объявляются строки в Паскале:

Объявление строковой переменной:

Присваивание значения строковой переменной:

str:='вот такая вот строка';

Пример использования строковых переменных в Паскале

var str1,str2: string; begin str1:='Привет, '; writeln('Ваше имя?'); readln(str2); writeln(str1,str2) end.

begin var str1:='Привет,'; var str2: string; writeln('Ваше имя?'); readln(str2); print(str1,str2) end.

Теперь снова возвращаемся к нашему циклу repeat .

Читайте также: