- •Реализация алгоритмов в системе программирования turbo pascal 7.0 Учебное пособие
- •Тема 1 Алгоритмы и способы их описания
- •Тема 2 Этапы подготовки и решения задач на эвм
- •Тема 3 Начало работы в системе Turbo Pascal 7.0
- •Начало работы с новой программой
- •Задание 1
- •Сохранение текстового файла программы на диске
- •Задание 2
- •Задание 3
- •Задание 4
- •Тема 4 Ввод исходных данных и вывод результатов вычислений
- •Упражнение 1.
- •Тема 5 Реализация линейных алгоритмов
- •Сложные выражения
- •Задание
- •Тема 6 Программирование разветвляющихся алгоритмов
- •Задание 1
- •Задание 2
- •Тема 7 Циклические алгоритмы с известным числом повторений
- •Задание
- •Тема 8 Циклические алгоритмы с неизвестным числом повторений
- •Задания
- •Задание
- •Тема 10 Работа с массивами
- •Задание
- •Задание
- •Тема 12 Записи
- •Задания
- •Тема 13 Работа с файлами
- •Задания
- •Задания
- •Тема 15 Алгоритмы построения графика аналитически заданной функции
- •Задание
- •Тема 16 Анимация изображений
- •Задание 1
- •Задание 2
- •Тема 17 Численные методы вычисления определённого интеграла
- •1. Метод прямоугольников
- •2. Метод трапеций
- •3. Метод Симпсона
- •Задания
- •Тема 18 Численные методы решения нелинейных уравнений
- •Задания
- •Тема 19 Численные методы решения обыкновенных дифференциальных уравнений
- •Задание
- •Оглавление
- •Литература
Задание
Разработать программу для расчета и вывода таблицы значений функции, состоящей из nстрок, в соответствии с вариантом задания, при изменении аргумента от начального и с заданным шагомx(см. табл.). Ввод исходных данных организовать с помощью присваивания значений переменным.
Вари ант |
Функция |
Условие |
a |
b |
c |
xn |
x |
n |
1 |
|
1x2 x<1 x>2 |
-0,5 |
2 |
|
0 |
0,15 |
17 |
2 |
|
x<1,3 x=1,3 x>1,3 |
1,5 |
|
|
0,8 |
0,1 |
13 |
3 |
|
x<1,2 x=1,2 x>1,2 |
2,8 |
-0,3 |
1 |
1 |
0,05 |
17 |
4 |
|
x<1,4 x=1,4 x>1,4 |
1,65 |
|
|
0,7 |
0,1 |
14 |
5 |
|
x<1 x=1 1<x<2 x>2 |
2,3 |
|
|
0,2 |
0,2 |
14 |
6 |
|
x>a x=a x<a |
2,5
|
|
|
1 |
0,5 |
9 |
7 |
|
bx<1 bx=1 bx>1 |
|
1,5 |
|
0,7 |
0,1 |
14 |
8 |
|
x>3,5 x 3,5 |
|
|
|
2 |
0,1 |
16 |
9 |
|
x>1 x1 |
20,3 |
|
|
0,5 |
0,1 |
15 |
10 |
|
x<0,5 x=0,5 x>0,5 |
|
|
2,2 |
0,2 |
0,2 |
10 |
Тема 8 Циклические алгоритмы с неизвестным числом повторений
Для организации циклов с заранее неизвестным числом повторений (а также и для организации циклов с известным числом повторений) используют оператор цикла с предусловием (оператор while) и оператор цикла с постусловием (операторrepeat). Вид оператора цикла с предусловием:
While b do s;
Здесь b– логическое выражение,s – тело цикла. При выполнении оператора сначала проверяется логическое выражение, а затем выполняется тело цикла, т.е. операторы циклической части. Цикл повторяется, пока логическое выражение истинно. Когда оно становитсяложным, происходит выход из цикла. Если с самого начала логическое выражение ложно, тело цикла не выполнится ни разу. Если тело цикла является составным оператором, т. е. состоит из нескольких операторов, его необходимо ограничить операторными скобкамиbeginиend.
Вид оператора цикла с постусловием:
repeat s until b;
Здесь s– тело цикла,b- логическое выражение. При выполнении оператора сначала выполняется тело цикла, а затем проверяется логическое выражение. Цикл повторяется, пока логическое выражение ложно. Когда оно становитсяистинным, происходит выход из цикла. Таким образом, если даже логическое условие изначально истинно, обеспечивается, по крайней мере, одно выполнение тела цикла.
Операторы WhileиRepeatпозволяют организовывать итерационные циклы, в которых происходит последовательное приближение к искомому значению с заданной точностью. Условием выхода из цикла является достижение заданной точности.
Пример 1.Найтиk, при котором значение суммыs=3+6+9+...+3kстановится большеtпри вводеtс клавиатуры.
Решение.Каждое слагаемое равно произведению числа3 на порядковый номер этого слагаемого. Поэтому можно организовать цикл, в которомsнаходится путем прибавления предыдущего значенияsк порядковому номеру слагаемого, умноженному на3. В цикле также должен увеличиваться на единицу порядковый номер слагаемого. Перед циклом следует обнулить начальное значениеsи задать начальное значениеk. Выход из цикла происходит, когдаsстанет большеt. Поскольку количество повторений заранее неизвестно, можно использовать для организации цикла операторыWhileилиRepeat, но нельзя использовать операторFor.
Существуют значения t(например, приt = -5), при которых цикл не должен быть выполнен ни разу. В этом случае для организации цикла надо использовать операторwhile. Если производится суммирование, обязательно присвоить начальное значениеs=0. Следует учесть, что сначала происходит увеличениеk, а затем расчетs. Поэтому первоначальное значениеk=0. Ниже приведён текст программы.
Uses Crt; {подключение модуля crt}
Var {описание переменных}
s,k:integer;
t:real;
Begin
Clrscr; {очистка экрана}
Write('t= ');
Readln(t); {ввод значения t}
s:=0; k:=0; {начальные значения s и k}
While s<=t do {начало цикла/проверка условия}
begin
k:=k+1; {увеличение k в цикле}
s:=s+3*k; {расчет s}
end; {окончание цикла}
Writeln('k= ',k); {вывод на экран найденного значения k}
Readln;
End.
Пример 2. Вывести на экран в два столбца угловые значения земных параллелей от экватора до Северного полюса через каждые 10ои соответствующие им длины параллелей, считая Землю идеальным шаром с радиусом 6370 км.
|
Решение.Длину земной параллели можно найти по формуле D=2rp=2rzcos(), где rp - радиус параллели, rz- радиус Земли,- угловая величина параллели (см. рис). Длину следует рассчитывать и выводить на экран 10 раз по одной и той же формуле, изменяя только угол(0о, 10о,…,90о). Поэтому организуем цикл, в котором рассчитывается длина параллели и выводятся на экран значения угла и длины параллели. В цикле также необходимо увеличивать значение углана 10о. Перед циклом следует задать начальное значение, равное 0. |
Поскольку в Паскале тригонометрические функции рассчитываются от углов, выраженных в радианах, то угловую величину параллели следует переводить из градусов в радианы по выражению /180.
Число повторений в цикле известно (равно 10), поэтому для организации цикла можно использовать операторы for,whileилиrepeat.
Текст программы при использовании оператора repeat:
uses crt;
var
rz,alfa:integer;
dlina:real;
Begin
clrscr; {очистка экрана}
rz:=6370; {значение радиуса Земли}
alfa:=0; {начальное значение широты (Экватор)}
repeat {начало цикла}
dlina:=rz*cos(alfa*pi/180)*2*pi; {расчет длины параллели}
Writeln(alfa:3,' ',dlina:7:1); {вывод на экран}
alfa:=alfa+10; {увеличение широты}
until alfa>90; {конец цикла/проверка условия}
Readln;
End. {конец программы}