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

Задание

Разработать программу для расчета и вывода таблицы значений функции, состоящей из nстрок, в соответствии с вариантом задания, при изменении аргумента от начального и с заданным шагомx(см. табл.). Ввод исходных данных организовать с помощью присваивания значений переменным.

Вари ант

Функция

Условие

a

b

c

xn

x

n

1

1x2

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

x1

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=2rp=2rzcos(), где 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. {конец программы}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]