Программа в паскале с while пример

Важные отличия команды While от For
1. Цикл выполняется пока условие истинно=true. (Может выполняться бесконечно, пока пользователь не остановит)
2. Счетчик цикла может быть не только +1 или -1, а произвольным числом, например +0.5, или -1.2
3. Если не менять параметр условия, программа зациклится, то есть будет работать, пока пользователь сам её не остановит. (Как пример — работа операционной системы. Пока не выключил — работает);
Команда For

For i:=1 to 10 do
I:=1; While i

Рассмотрим несколько примеров:

Команда For
Вывести на экран числа от 1 до 10

var i:integer; BEGIN For i:=1 to 10 do write(i:3); Write(‘Press Enter to Exit. ‘); readln; END.

тоже самое но с While

var i:integer; BEGIN i:=1; //начальное значение While i

Казалось бы зачем писать больше и придумывать «велосипед», но….
Усложним задачу. Вывести числа на экран с шагом 0.5
1.0, 1.5, 2.0, 2.5 ,… 10.0
Вот тут для команды For нужно что то придумывать, ибо она работает с шагом +1 или -1. A вот While решает эту задачу без всяких проблем

Программирование на Pascal. Цикл WHILE. Задание 8. Видеокурс


For

var i:integer; BEGIN For i:=2 to 20 do write(i/2:3:2,’ ‘); Write(‘Press Enter to Exit. ‘); readln; END.
var i:real; BEGIN i:=1; //начальное значение While i

Обращаю внимание на объявление переменной i.
В For — переменная счетчик может быть только целого (integer) типа.
В While — она может быть целого(integer), действительного (real) и логического (boolean) типов.
Переменную, которая имеет тип boolean назовем Флагом.
Эта переменная может получать значения True или False
Рассмотрим решение задачи с выводом чисел 1.0, 1.5, 2.0, 2.5 ,… 10.0 с шагом 0.5 3-мя способами

1 способ

var i:integer; BEGIN For i:=2 to 20 do write(i/2:3:2,’ ‘); Write(‘Press Enter to Exit. ‘); readln; END.

2 способ

var i:real; BEGIN i:=1; //начальное значение While i

3 способ

var i:real; f:boolean; BEGIN i:=1; //начальное значение счетчика f:=true;//значение флага — Истина While f=true do //пока флаг Истина работаем begin write(i:3:2,’ ‘); i:=i+0.5; //изменение параметра выхода шаг 0.5 if i=10 then f:=false;//условие выхода из цикла. Флаг — Ложь end; Write(‘Press Enter to Exit. ‘); readln; END.

Второе и ВАЖНОЕ преимущество команды While перед For это выполнение некого набора команд заранее неизвестное количество раз (но с условием окончания цикла).
Жизненный пример: мы идем на автобусную остановку и ожидаем автобус. Не всегда автобус приходит вовремя, по этому мы ждем ПОКА автобус не придет.
Готовим чай: ПОКА вода не закипит.
Мы не знаем точных рамок процесса, но мы знаем, при выполнении какого условия он завершиться.
Классическая задача для демонстрации работы While, это поиск наибольшего общего делителя двух чисел (НОД), или алгоритм Евклида.
У нас есть два числа А и В. Нужно найти их НОД.
Евклид говорил так:от большего числа отнимаем меньшее, пока они не станут равны.
А=8 В=6

Решение задач на Pascal #6 | Цикл While


A=B — нет
А>B — 8-6=2. A=2 B=6
B>A — 6-2=4. A=2 B=4
B>A — 4-2=2. A=2 B=2
А=В да. Значит НОД(8,6)=2
Решим задачу двумя способами:
1 с переменными А и В,
2 способ — с флагом F (boolean)

1 способ

var a,b,nod:integer; begin write(‘a=’);readln(a); write(‘b=’);readln(b); write(‘NOD (‘,a,’ ‘,b,’) = ‘); while (a <> 0) and (b <> 0) do begin if a>b then a:=a-b; if b>a then b:=b-a; end; nod:=a; writeln(nod); end.

2 способ

var a,b,nod:integer; f:boolean; begin write(‘a=’);readln(a); write(‘b=’);readln(b); write(‘NOD (‘,a,’ ‘,b,’) = ‘); f:=true; While f=true do begin if a>b then a:=a-b; if b>a then b:=b-a; if a=b then f:=false; end; nod:=a; writeln(nod); end.

Возникает вопрос: в каких случаях использовать For, а когда While?
Для начинающих можна дать следуюющий ответ (команда While — рассширеный вариант For)
Если программист заранее знает точное колличество повторений (начальное значение и конечное значение счетчика, и сам счетчик измееняется с шагом +1 или -1, то можно использовать For)
Если же вы не знаете колиичества повторений, шаг счетчика не +1 или -1, тогда предпочтительней использовать While.
Вдумчивый читатель может заметить, что в примере, который выводит на экран числа от 1 до 10 с шагом 0.5 мы использовали For и все работало.
Ответ прост — в подобных случаях программист решает сам, что ему удобней использовать For или While.
Можно сказать что в программе можно вообще обойтись одним универсальным While. НО с точки зрения понятности и читаемости программного кода в одних случаях предпочтительнее For в других While.
При решении базовых задач с использованием цикла While нужно запомнить следующее:
1. Переменной параметру-счетчику-флагу присваивается начальное значение
2. В команде While проверяем истинность условия (Пока условие истинно = true — работаем, если условие не сработало = false тогда выходим из цикла)
3. В теле цикла обязательно меняем параметр-счетчик-флаг, что бы когда нибудь наступил момент, что условие в команде While не сработает (станет ложным=false).
4. Переходим к п. 2.
Если все таки пропустили что то и программа зациклилась, то в зависимости от среды написания программы — чаще всего помогает нажатие Ctrl + Break(Pause)

Читайте также:
Программа для узнать видеокарты

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Источник: codder.info

Цикл с условием while в паскаль

В этом уроке мы научимся использовать цикл while в программах Паскаль Если в программе Pascal нужно повторить одни и те же действия неизвестное количество раз, пока вывполняется какое-либо условие, то используется цикл while. Этот цикл исполняется, пока исполняется условие. Цикл while в Паскаль задаётся
while (условие) do
begin
. команды
end;
Цикл while в паскаль исполняется, пока верно это условие. Если вы хотите, чтобы цикл исполнялся, пока условие не выполняется, используется такая конструкция. not это ключевое слово, обозначающее отрицание.
while (not(условие)) do
begin
.
end;
Пример программы га паскаль с циклом while Ввод числа в паскаль с клавиатуры в заданном диапазоне Пользователь вводит число. Если число меньше 10 и больше 20, программа запрашивает число снова. Если было введено число большее 10 и меньшее 20, оно выводится на экран.
var n: real;
begin
n := -1;
while not((n > 10) and (n < 20)) do
begin
writeln(‘Введите число большее 10 и меньшее 20.’);
readln(n);
end;
writeln(‘Вы ввели число ‘, n, ‘.’);
end.
Пример прогарммы на паскаль решение уравнение методом перебора. Задаётся точность решения уравнения eps > 0 и шаг перебора dx. Пользователь вводит границы поиска корней уравнения. Уранвение для примера x-9=0 оно задается в условии цикла while
// вводим переменные
var eps, a, b, dx, x: real;
// начинаем программу
begin
// запрашиваем границы поиска нулей
writeln(‘Введите начальную границу поиска.’);
readln(a);
writeln(‘Введите конечную границу поиска.’);
readln(b);
// задаём шаг перебора и погрешность eps
dx := 0.1;
eps := 0.001;
// вводим x и приравниваем его к начальной границе поиска
x := a;
// пока заданное уравнение при подставленном x
// больше погрешности eps
while (abs(x — 9) > eps) do
begin
// изменяем x на dx
x := x + dx;
end;
// когда условие в цикле while не исполнилось,
// выводим корень уравнения на экран
writeln(x);
end.

Вернуться к содержанию Следующая тема Процедуры и функции в Паскаль

Полезно почитать по теме циклы в pascal паскаль
Цикл for в pascal

Комментарии ( 0 )

Нет комментариев. Ваш будет первым!

Источник: itrobo.ru

Циклы по условию на языке Pascal

Программирование на языке Python (§ 54 - § 61)

Изучить циклы
с предусловием
While… do
и с постусловием
Repeat… until
на примере решения
задач с использованием
рекуррентных
соотношений и
бесконечных рядов.
Цикл – процесс многократного
повторения каких-либо действий.
Язык Паскаль имеет три оператора,
с помощью которых можно
организовать циклическую
структуру:
Цикл с параметром (счетчиком)
“Для” (For . )
Цикл с предусловием “Пока”
(While . do)
Цикл с постусловием “До”
(Repeat . until)

3. Поговорим о цикле For…to…do

Пусть решается простая
задача вывода на экран
целых чисел от 1 до 10.
Для этой задачи идеально
подходит цикл со
счетчиком For…to… do .
!
Программа
var i: integer;
Begin
For i:=1 to 10 do
Writeln(i);
End.
!
Надо помнить
В цикле For … to … do начальное
значение переменной i меньше
предельного.
Шаг изменения i по умолчанию
равен +1.
Переменная i НИКОГДА
не может стоять СЛЕВА от
оператора присваивания «:=».
Тип переменной i – любой
скалярный (integer, byte, char, др.)
КРОМЕ вещественного.
i НИКОГДА не может быть real .

4. Когда For…to…do уступает место

Если число повторений известно наперед, цикл For идеален!
!
Циклы While… do и Repeat… until используются в целом классе
задач, когда повторные вычисления заканчиваются
по заданному наперед условию:
при табулировании графиков функций на заданном интервале
с заданным шагом;
для расчета с заданной точностью сумм бесконечных
асимптотических рядов, с помощью которых выражаются
тригонометрические функции, трансцендентные числа
= 3,1415… и основание натурального логарифма e=2,72…;
для вычисления квадратного корня из числа методом Герона.

5. Сравнение циклов While и Repeat

Формат оператора
цикла с постусловием:
< присвоение начальных
Общее
в этих
циклах
значений переменным,
входящим в условие >
Repeat

Читайте также:
Adobe photoshop виды программы

.

until ;
Тело цикла
Тело цикла
Формат оператора
цикла с предусловием:
значений переменным,
входящим в условие>
While do
begin

.

end;
1. До цикла задается начальное значение переменных,
входящих в условие. Условие — выражение булевского типа.
2. В теле цикла значение переменных, входящих в условие,
должны обязательно изменять свое значение, иначе
возникнет ситуация «зависания».

6. Цикл предусловием While … do

Решение задачи о выводе
10 целых чисел на экран
с использованием цикла
While… do:
!
Программа
var i: integer;
Begin
i: =1;
While i begin
Writeln(i);
i:=i+1
end;
End.
!
Блок-схема алгоритма
y
начало
i:=1
i Нет (False)
Да (True)
Writeln(i)
i:=i+1
конец

7. Особенности цикла While…do

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

8. Цикл с постусловием Repeat … until

Решение задачи о выводе
10 целых чисел на экран
с использованием цикла
Repeat…until:
!
Программа
var i: integer;
Begin
i: =1;
Repeat
Writeln(i);
i:=i+1
Until i>10
End.
!
Блок-схема алгоритма
начало
i:=1
Writeln(i);
i:=i+1
Нет (False)
i>10
Да (True)
конец

9. Особенности цикла Repeat…until

Так как условие проверяется на выходе из цикла, то
цикл выполняется хотя бы один раз.
! Все операторы, стоящие в теле цикла, выполняются
ДО проверки условия, поэтому операторные
скобки не ставятся.
! В теле цикла должно обязательно выполняться
действие, приводящее к изменению условия,
иначе цикл станет бесконечным. Оператор, в котором
изменяются входящие в условие переменные,
может стоять не обязательно в конце цикла.

10. Решаем самостоятельно

Два варианта одной задачи:
!
!
Два игрока A и B бросают
кубик N раз, суммируя
результаты бросков.
Напишите программу,
определяющую
победителя после N
бросков.
Два игрока A и B бросают
кубик и суммируют
результаты бросков.
Победителем объявляется
игрок, набравший первым
объявленную сумму очков S.
Напишите программу,
определяющую победителя.
?

11. Задача о рассеянном джентльмене

Некто отправился на работу
из дома (пункт А) в офис
(пункт B). Расстояние между
домом и офисом равно 1 км.
Пройдя половину пути,
джентльмен вспомнил, что
не попрощался с семьей,
повернул назад и прошел
третью часть расстояния и,
боясь опоздать на работу,
снова повернул и прошел
четверть расстояния. Затем
снова повернул и прошел
1/5 расстояния и т.д.
и т.д.
A
1/6
-1/5
1/4
-1/3
1/2
1 км
B
На каком расстоянии от офиса
окажется джентльмен, если
продолжит свои метания?
Провести вычисления
расстояния с точностью до 1 см.

12. Анализ задачи

Расстояние, на котором окажется джентльмен от дома (А),
можно записать так:
SА = 1/2 — 1/3 + 1/4 — 1/5 + 1/6 – 1/7 +… (-1)i+1 /i…
Так как расстояние АВ=1, джентльмен окажется от места работы
на расстоянии S:
S=1-SА = 1- [1/2 — 1/3 + 1/4 — 1/5 + 1/6 — 1/7 +… (-1)i+1 /i …
Таким образом, решение задачи сводится к вычислению
суммы гармонического ряда:
S= 1-1/2 + 1/3 – 1/4 + 1/5 -… (-1)i+1 /i -…
Суммирование продолжаем, пока абсолютное значение
разности сумм, вычисленных на (i+1)-м шаге и i-м шаге, больше
наперед заданного малого числа eps , т.е. |S-S1|> eps.
Таким образом, ряд вычисляется приближенно с заданной
погрешностью.
Для решения задачи используем цикл While.

13. Программа для задачи о джентльмене

14. Рекуррентные соотношения

В математике известно понятие рекуррентной
последовательности чисел (от латинского «recurrere» –
«возвращаться»).
!• Это понятие вводят так: пусть известно k чисел a , … , a ,
1
k
которые являются началом числовой последовательности.
Следующие элементы этой последовательности вычисляются так:
ak+1=F(a1, … , ak);
ak+2=F(a1, … , ak+1);
ak+3=F(a1, … , ak+2);…,
ak+i=F(a1, … , ak+i-1)
Величина k называется глубиной рекурсии.
!
!
Рекуррентными называются соотношения, в которых
очередной член последовательности выражен через
один или несколько предыдущих.

15. Примеры рекуррентных соотношений

С помощью метода рекуррентных соотношений вычисляют:
арифметические и геометрические последовательности;
последовательность чисел Фибоначчи;
бесконечные последовательности (ряды) для тригонометрических
функций;
бесконечные последовательности (ряды) для функций ex, sqrt(x),
ln(1+x);
выражения вида:
N корней

16. Анализ задачи о вычислении

Задача. Вычислить квадратный корень целого числа а по
рекуррентной формуле Герона Xi+1=(X i+ а/X i)/2
при заданной точности вычисления eps.
Алгоритм вычисления. Зададим X1 — начальное значение
корня из числа а.
Например, X1= a/2.
Тогда каждое следующее приближение вычисляется через
предыдущее:
Х2=(X1 + а/X1)/2
Х3=(X2 + а/X2)/2
———-Xi+1=(Xi + а/Xi)/2
Вычисление продолжаем до тех пор, пока выполнится модуль
разницы между Xi+1и Xi станет меньше заданной погрешности
вычисления eps: |Xi+1 — Xi| < eps
Для решения задачи используем цикл Repeat… until.

17. Program mysqrt

18. Задачи с бесконечными рядами

Задача. Вычислить сумму бесконечного ряда
S=x – x3/3! + x5/5! — x7/7! +. c заданной точностью eps.
Будем использовать рекуррентную формулу, с помощью
которой каждый последующий член ряда выражается через
предыдущий., т.е. справедливо соотношение:
un = q un-1
Определяем величину q, последовательно рассмотрев
отношение второго члена к перовому, третьего ко второму,
четвертого к третьему и т.д.:
q1= u2 / u1 = — (x3/3!)/x = — x2/(2 * 3)
q2= u3 / u2 = — (x5 / 5!) / (x3/3!) = — x2/(4 * 5)
q3= u4 / u3 = — (x7 / 7!)/ (x5/ 5!) = — x/(6 * 7)
Для произвольного q справедлива рекуррентная формула:
q = — x2 / k/(k+1), где k= 2, 4, 6, .
В языках программирования стандартная функция sin(x)
рассчитывается с помощью асимптотического ряда S.

Читайте также:
Не найдена программа микшера sndvol32 r

19. Program mysin

20. Арифметическая последовательность

В символьной записи арифметическую прогрессию можно
представить так:
a, a+d, a+2*d, a+3*d,…, a+(N-1)*d.
Здесь a – первый член последовательности, d – разность между
двумя соседними членами, N – число членов последовательности.
Например:
1 + 3 + 5 + 7 + 9 + … + 99 (a=1, d=2)
2 + 4 + 6 + 8 +…+ 100
(a=2, d=2)
!
Два типа задач:
Вычислить сумму S при заданном числе членов N
(используем цикл For).
Определить число членов N при достижении заданной
суммы S (используем цикл While).

21. Геометрическая прогрессия

Геометрической последовательностью называется
последовательность, в которой отношение между ее членом
и членом, ему предшествующим, есть величина постоянная.
!
!
В символьной записи это можно записать так:
a, a*r, a*r2, a*r3, … , a* r(N-1)
Здесь буквой a обозначен первый член последовательности,
буквой r – ее знаменатель и буквой N – число членов
последовательности.
Например, если a=4, r=0.5, N=7, получаем последовательность
4, 2, 1, 0.5, 0.25, 0.125, 0.625
Сумма геометрической прогрессии S определяется
формулой: S= a + a*r + a*r2 + a*r3 + … + a*r(N-1)

22.

Задача «Изумруды»
!
!
Задача
У царя было семь сыновей.
В сундуке лежали изумруды.
Пришел первый сын и взял
половину того, что было. Пришел
второй сын и взял половину того,
что осталось и т.д. Каждый из
сыновей приходил и забирал
половину того, что осталось.
Наконец, пришел последний,
седьмой сын и увидел почти
пустой сундук — с двумя
изумрудами.
Сколько изумрудов лежало в
сундуке первоначально?
При решении задачи будем
использовать цикл While…do.
Блок-схема
начало
i=7 q=2
i >1
Нет (False)
Да (True)
i=i-1
q=q*2
q
конец

23. Программа

Program izumrud;
Var I, q, r: integer;
Begin
i=7 ‘номер 7-го сына
q=2 ‘седьмому сыну досталось 2 изумруда
r=2 ‘разность геометрической прогрессии
WriteLn(‘i=‘, I, ‘ q=‘, q)
While i>1 do
begin
q=q*r ‘ вычисление i-того члена прогрессии
i=i-1
‘ номер следующего сына уменьшается на 1
WriteLn(‘i=‘, I, ‘ q=‘, q)
end;
WriteLn(‘всего ‘,q,’ изумрудов’)
End.

24. Задание

1. Не используя стандартные функции (за исключением abs),
вычислить с разной точностью eps>0:
a) Y1=ex = 1+x/1! + x2/2! +…+ xn/n! …;
b) Y2= cos(x) = 1- x2/2! + x4/4! -…+ (-1)n x2n/(2n)! +…;
c) Y3= ln(1+x)= x – x2/2 + x3/3 -… + (-1)n-1 xn/(n)+…
2. Определить количество итераций (повторений) n в зависимости
от eps.
3. Занести данные в таблицу:
eps
0.001
0.0001
0.00001
y1
n
y2
n
y3
n

25. Можно ли вычислить число ?

Можно ли вычислить число ?
• Одним из самых знаменитых
чисел в математике ,
вычисленных приближенно,
является число .
• Число определяется как
отношение длины окружности к
ее диаметру.
• Вот значение до 16-го знака:
3.1415926535897932…
• Числу воздвигают монументы
и посвящают стихи.
• Во всех алгоритмических
языках есть стандартная функция
для вычисления числа . В языке
Паскаль это функция Pi.
Гордый Рим трубил победу
Над твердыней Сиракуз;
Но трудами Архимеда
Много больше я горжусь.
Надо только постараться
И запомнить все как есть:
Три – четырнадцать – пятнадцать –
Девяносто два и шесть! (С.Бобров )
Монумент числу установлен в
Сиэтле

26. Число  и бесконечные ряды

Число и бесконечные ряды
У числа очень интересная история. Еще в 200 г. до нашей эры
греческий математик Архимед (тот самый Архимед, который,
купаясь в море, вдруг воскликнул «Эврика!» и открыл
знаменитый закон Архимеда!) утверждал, что число меньше,
чем 22/7 и больше, чем 223/71.
Многие математики выводили формулы для приближенного
вычисления в виде бесконечных рядов, например:
= 4 – 4/3 +4/5 – 4/7 + 4/9 — 4/11 + …
(Готфрид Лейбниц ( около 1673 г.)
= 2sqrt(3)[1 – 1/(3*3) +1/(32 *5) — 1/(33 *7)+…],
(Шарп ( около 1699 г.))
= sqrt(6 + 6/12 + 6/22 + 6/32 + 6/42 + 6/52… )
(Эйлер ( около 1736 г.)).
Здесь sqrt — обозначение знака квадратного корня из числа.

27. Домашнее задание

Задача 1. Напишите программу для вычисления n-й степени
числа X. Вычисление описать каждым из трех вариантов
оператора цикла: For. to. do, While… do, Repeat… until.
Задача 2. Вычислив асимптотический ряд
S= 1-1/3 +1/5 -1/7 + 1/9 — … (-1)i+1 (1/(2i+1)).
с точностью eps=0.0001 , вы узнаете, чему равно число = 4*S .
Напишите программу вычисления числа и сравните со
значением , вычисленным с помощью стандартной
функции Pi.
Замечание. Здесь удобно использовать такую формулу для
нечетного числа:
i:=i+2 (i=1, 2, 3. ).

Источник: ppt-online.org

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru