Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Му Паскаль Котликова В.Я..doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
464.9 Кб
Скачать

Варианты задач

  1. Дано натуральное число N. Вычислить:

  2. Дано натуральное число N. Вычислить:

  3. Дано натуральное число N. Вычислить произведение первых N сомножителей

  4. Дано натуральное число N. Вычислить:

  5. Дано натуральное число n. Вычислить:

  6. Дано натуральное число n. Вычислить: где n>2.

  7. Дано натуральное число n. Вычислить: (n>1).

  8. Дано натуральное число n. Вычислить:

  9. Вычислить:

  10. Дано натуральное число n. Вычислить:

3.2 Циклы с условием

В Паскале циклы с неизвестным заранее числом повторений (итерационные циклы) организованы с помощью операторов While и repeat.

Эти операторы, в отличие от оператора FOR, имеют более широкую область применения.

3.2.1 Циклы с предусловием

Цикл с предусловием реализуется в Паскале посредством оператора While. Заголовок оператора While (в переводе «пока») не содержит явных указаний на количество итераций – он содержит логическое выражение, значение которого автоматически вычисляется перед началом выполнения каждой очередной итерации (рисунок 8). Пока логическое выражение «истинно», итерации цикла будут продолжаться; как только после завершения очередной итерации логическое выражение станет «ложным», следующая итерация цикла выполнена не будет, и управление получит оператор программы, следующий после оператора While.

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

Рисунок 8 – Цикл с предусловием

Паскаль работает с оператором WHILE следующей структуры:

while (x) do

<тело цикла>;

или

while (x) do

begin

<тело цикла>;

end;

где while (пока), do (выполнить) – служебные слова, х – логическое выражение, задающее условие продолжения работы;

<тело цикла> – операторы Турбо Паскаля;

Тело цикла выполняется до тех пор, пока логическое выражение х истинно, в противном случае происходит выход из цикла.

Переменные оператора цикла должны быть определены до входа в циклическую часть. Необходимо предусмотреть выход из цикла. Если этого не предусмотреть, например, логическое выражение х – всегда истина, циклические вычисления будут выполнятся бесконечно. В этом случае говорят, что произошло «зацикливание» выполнения программы.

Работа оператора WHILE

  1. Проверяется значение логического выражения х.

  2. Пока значение х равно истина, выполняется циклическая часть.

  3. Если с самого начала значение х ложно, то операторы циклической части не выполнятся ни разу.

Пример 6. Найти, сколько слагаемых необходимо, чтобы сумма 2+4+6+… оказалась больше целого положительного числа N.

Решение.

Введем следующие обозначения:

S – текущее значение суммы;

Sl – значение очередного слагаемого;

K – количество слагаемых в сумме.

Алгоритм решения в виде блок-схемы представлен на рисунке 9. Программа рассмотрена ниже.

Program Pr5;

Var N,K, S,Sl: integer;

Begin

Write (‘Укажите положительное число’);

Readln(N);

S:=0;

Sl:=0;

K:=0;

While S<=N do

Begin

Sl:=Sl+2;

S:=S+Sl;

K:=K+1;

End;

Writeln (‘K=’, K);

End.

Рисунок 9 – Алгоритм решения задачи примера 6

Пример 7. Даны числа x, e . Вычислить sinx = x с точностью до e.

Для обеспечения требуемой точности e. необходимо в вычисляемую сумму знакочередующегося ряда включить только те слагаемые Un, которые удовлетворяют условию .

Для вычисления очередного члена ряда Un полезно воспользоваться рекуррентной формулой U1=x;

Алгоритм решения в виде блок-схемы представлен на рисунке 10.

Программа на языке Паскаль:

Program P;

Var x,e, S,U: real;

N: integer;

Begin

Write (‘введите значение х’);

Readln(х);

Write (‘введите точность’);

Readln(e);

S:=0;

U:=x;

N:=1;

While abs(U)>=e do

Begin

S:=S+U;

U:= - U*SQR(х)/((2*N+1)*2*N);

N:=N+1;

End;

Writeln (‘sin(x)=’, S:8:4);

End.

Рисунок 10 – Алгоритм решения задачи примера 7