Цель работы: Использование операторов циклов (повторений).
Теоретические основы:
В языке ТР имеются три различных оператора, с помощью которых организуются циклические (повторяющиеся) фрагменты программ.
Оператор цикла с предусловием
Оператор цикла с предусловием имеет вид:
While <условие> Do <оператор>;
где <условие> - логическое выражение.
Если логическое выражение принимает значение TRUE (истина), то выполняется оператор, стоящий после ключевого слова Do, в противном случае оператор While прекращает свою работу. На месте одного оператора может располагаться группа операторов, заключённых в операторные скобки (Begin ... end).
Оператор цикла с постусловием
Оператор цикла с постусловием имеет вид:
Repeat <Тело_цикла> Until <условие>
где <Тело цикла> - последовательность операторов ТР;
<условие> - логическое выражение.
Операторы "тела цикла" выполняются хотя бы один раз, после чего вычисляется значение логического выражения и если это значение FALSE, то операторы "тела цикла" повторяются, в противном случае оператор цикла завершает свою работу.
Оператор цикла с параметром
Оператор цикла с параметром имеет вид:
For <параметр_цикла> := <нач.знач.> To < конеч.знач.> Do <оператор>;
где <параметр_цикла> - переменная любого порядкового типа;
<нач.знач.> - начальное значение - выражение того же типа;
<конеч.знач.> - конечное значение - выражение того же типа;
На месте одного оператора может располагаться группа операторов, заключённых в операторные скобки (Begin ... end).
Для более гибкого управления операторами циклов For, While, Repeat в ТР введены две процедуры:
BREAK - реализует немедленный выход из цикла; действие процедуры заключается в передаче управления оператору, стоящему сразу за после последнего оператора цикла.
CONTINUE - обеспечивает досрочное завершение очередного прохода цикла, что эквивалентно передаче управления в самый конец циклического оператора.
Типовой пример
Составить схему алгоритма и программу для вычисления значений функции Y для значений переменной х, изменяющейся в интервале от a до b с заданным шагом h.
Решение
Так как в языке Pascal нет стандартной функции извлечения корня любой степени кроме квадратного, для вычисления функции Y воспользуемся переходом к функциям Exp и Ln.
При программировании необходимо учесть, что выражение, стоящее под знаком Ln, может быть только положительным: (6x2-x3) > 0.
Исходными данными в этой задаче являются значения a,b и h.
Начальное значение х принимаем равным а (х:=а). Каждое следующее значение х вычисляется по формуле х:=х+h. Вычисления функции Y для новых значений х заканчиваются, когда значение х становится больше, чем заданное значение b.
Схема алгоритма и программа вычислений зависит от того, какой оператор цикла используется в программе. Рассмотрим три различных варианта решения поставленной задачи.
{Программирование циклов с использованием оператора WHILE}
{Студенты гр. ..... Фамилии …}
Uses crt; {Подключение стандартного модуля TP}
Var x,y,H,A,B: real;
BEGIN Clrscr; { Очистка экрана}
Writeln(' Введите A B H'); read(A,B,H);
x:=A;
While x<=B Do
Begin
if (6*x*x-x*x*x)<=0 then
Writeln('При x= ',x:5:3,' под знаком логарифма недопустимое значение')
Else begin
y:= Exp (1.0/3.0* Ln(Abs(6*x*x-x*x*x)));
Writeln('x=',x:8:3,' y=',y:8:3);
end; {Конец else}
x:=x+H;
Еnd; {Конец while} Readkey; { Ожидание нажатия любой клавиши}
END.
{Программирование циклов с использованием конструкции REPEAT…UNTIL}
{Студенты гр. ... Фамилии ...}
Uses crt; {Подключение стандартного модуля TP}
Var x,y,A,B,H: real;
BEGIN Clrscr; { Очистка экрана}
Writeln(' Введите A B H'); readln(A,B,H);
x:=A;
Repeat
if (6*x*x-x*x*x)=<0 then
Writeln('При x= ',x:5:3, ' под знаком логарифма недопустимое значение')
Else begin
y:= Exp(1.0/3.0* Ln(Abs(6*x*x-x*x*x)));
Writeln(' x= ',x:8:3,' y= ',y:8:3);
end;
x:=x+H;
Until x>B; Readkey;{Ожидание нажатия любой клавиши}
END.
{Программирование циклов с использованием оператора FOR}
{Студенты гр. ....}
Uses crt;
Var x,y,A,B,H:real;
n,i: integer;
BEGIN Clrscr;
Writeln(' Введите A B H'); read(A,B,H);
n:= Round((B-A)/H)+1;
x:=A;
For i:=1 To n Do
begin
if (6*x*x-x*x*x)<=0 then
Writeln('При x= ',x:5:3,' под знаком логарифма недопустимое значение')
else
begin
y:= Exp(1.0/3.0*Ln(Abs(6*x*x-x*x*x)));
Writeln(' x= ',x:8:3,' y= ',y:8:3);
end;
x:=x+H;
end; { Конец For}
END.
Варианты самостоятельных заданий
Задание №1
Вычислить значение выражения при n равном от 1 до 10.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Задание №2
Составить программу для вычисления значений функции F (х) на отрезке [а, Ь] с шагом h. Результат представить в виде таблицы, первый столбец которой — значения аргумента, второй — соответствующие значения функции.
1. F(x)=
2. F(x)=x-sin x
3. F(x)=2cosx-1
4. F(x)=tgx
5. F(x)=ctg x+1
6. F(x)=sinx-cosx
7. F(x)=x sinx
8. F(x)=x-sin x
9. F(x)=
10. F(x)=cosx+2х
11. F(x)=2х2+10х
12. F(x)=ctg x+1
13. F(x)=sinx-cosx
14. F(x)=x2 +sinx
15. F(x)=5x-sin x
16. F(x)=
17. F(x)=2ctgx-1
18. F(x)=2x2+4x+3
19. F(x)= x+1
20. F(x)=x2-2
Задание № 3
1. Последовательно вводится N целых чисел. Найдите сумму всех введенных положительных чисел.
2. Выведите на экран список квадратов чисел от 1 до 20 (1, 4, 9, 16, …).
3. Выведите на экран в три столбца список чисел от 1 до N, их квадратов и кубов. Число N вводите с клавиатуры. Например, для N=5 на экране должно быть:
1 | 1 | 1 |
2 | 4 | 8 |
3 | 9 | 27 |
4 | 16 | 64 |
5 | 25 | 125 |
4. Напишите программу вычисления выражения (3-х)(6-х)(9-х)…(21-х), где х-действительное число.
5. Определите среднюю зарплату сотрудника фирмы за год, если известна его зарплата за каждый месяц.
6. Последовательно вводится N целых чисел. Найдите минимальное и и максимальное из введенных чисел.
7. Последовательно вводится N целых чисел. Найдите сумму всех введенных положительных чисел.
8. Выведите на экран список квадратов чисел от 1 до 20 (1, 4, 9, 16, …).
9. Вычислите сумму S и произведение P всех целых чисел от N1 до N2. Пример: для N1=3, N2=7 получим S=25, P=2520.
10. Напишите программу вычисления выражения (3-х)(6-х)(9-х)…(21-х), где х-действительное число.
11. Определите среднюю зарплату сотрудника фирмы за год, если известна его зарплата за каждый месяц.
12. Последовательно вводится N целых чисел. Найдите минимальное и и максимальное из введенных чисел.
13. Последовательно вводится N целых чисел. Найдите сумму всех введенных положительных чисел.
14. Последовательно вводится N целых чисел. Найдите сумму всех введенных положительных чисел.
15. Дана последовательность чисел, состоящих только из цифр 0 и 5, в порядке возрастания: 0 5 50 55 500 505 5000 5005 5050 и так далее. Найти k-ое по порядку в этой последовательности число.
16. Для каждого натурального числа в промежутке от m до n вывести все делители, кроме единицы и самого числа. m и n вводятся с клавиатуры
17. Написать программу, в которой вводятся два операнда Х и Y и знак операции (+, –, /, *). Вычислить результат Z в зависимости от знака. Предусмотреть реакции на возможный неверный знак операции, а также на ввод Y=0 при делении. Организовать возможность многократных вычислений без перезагрузки программа (т.е. построить цикл). В качестве символа прекращения вычислений принять ‘0’
18. Написать программу, подсчитывающую количество четных и нечетных цифр в числе.
19. Вводится число. Преобразовать его в другое число, цифры которого будут следовать в обратном порядке по сравнению с введенным числом.
20. Ввести число. Если количество его разрядов меньше пяти, то вывести его на экран, дописав нули перед числом так, чтобы в итоге получилось пять знаков. Если количество разрядов больше пяти, то вывести только первые пять разрядов. Если число пятизначное, то вывести его как есть.
Контрольные вопросы:
1. Какой вычислительный процесс называется циклическим?
2. Сколько раз выполняется цикл с предусловием?
3. Объясните порядок выполнения цикла с предусловием
4. Что представляет собой тело цикла оператора цикла с постусловием?
5. Как осуществляется выход из цикла с постусловием?
6. Объясните порядок выполнения цикла с постусловием
7. Сколько раз выполняется цикл с параметром?
8. Сколько существуют вариантов цикла с параметром?
9. Объясните порядок выполнения цикла с параметром
10. Объясните назначение и применение процедур Break и Continue
Дата: 2019-11-01, просмотров: 364.