Цель: освоить методы разработки алгоритмов и программирования задач линейной структуры.
Краткие теоретические сведения
Алгоритм линейной структуры – это алгоритм, в котором все действия выполняются последовательно друг за другом и только один раз. Блок-схема алгоритма представляет собой последовательность блоков, которые располагаются сверху вниз в порядке их выполнения. Все промежуточные или исходные данные влияния на направление процесса выполнения не оказывают.
Пример. Вычислить высоты треугольника со сторонами a, b, c, используя формулы:
h = 2
a a
h = 2
b b
h = 2
c c
p( p - a)( p - b)( p - c)
p( p - a)( p - b)( p - c) p( p - a)( p - b)( p - c)
где
p = (a + b + c) / 2
При решении данной задачи для исключения повторений следует вычислять
высоты не по приведенным выше формулам непосредственно, а используя
промежуточную переменную:
t = 2
p(p - a)(p - b)(p - c),
тогда
ha = t / a,
hb = t / b,
hc = t / c
Схема алгоритма решения задачи имеет следующий вид:
11
Для записи программы линейной структуры необходимы операторы присваивания, ввода исходных данных и вывода результатов вычислений.
Программа на языке Pascal состоит из заголовка, раздела описаний и раздела операторов:
Program имя;
раздел описаний begin
раздел операторов
end.
Заголовок программы начинается со служебного слова Program, после которого указывается имя программы. Раздел описаний предназначен для объявления в программе всех данных, которые встречаются, а также их характеристик.
Существует определенный порядок в разделе описаний:
- раздел меток Label;
- раздел констант Const;
- раздел типов Type;
- раздел переменных Var;
- раздел процедур и функций (Function и Procedure).
Раздел операторов заключается в операторные скобки вида: Begin (начать) и End (закончить), при этом после End ставится точка. Точка – это признак окончания программы. В разделе операторов записывается последовательность выполняемых операторов. Операторы отделяются друг от друга символом ";"
Оператор присваивания – это основной оператор любого языка программирования. Он предназначен для замены текущего значения переменной новым значением.
Форма оператора присваивания имеет вид:
При выполнении этого оператора значение выражения вычисляется и присваивается переменной.
Например,
а := b+c;
w := sin(sqr(t))/(s + ln(v)); s := „строка‟;
12
Имя переменной и результат выражения должны принадлежать к одному типу.
Для ввода данных используются операторы:
readln (элемент 1, элемент 2, ...);
При выполнении оператора read (элемент1, элемент2, ...) происходят следующие действия: программа приостанавливает свою работу и ждет, пока на клавиатуре будут набраны данные и нажата клавиша Enter. После нажатия клавиши Enter, введенные значения присваиваются переменным, имена которых указаны в операторе read. Числовые значения должны быть набраны в одной строке и разделены пробелами.
Оператор readln (элемент 1, элемент 2, ...) осуществляет ввод данных, а затем обеспечивает переход к началу новой строки.
Для вывода данных используются операторы:
writeln (элемент 1, элемент 2, ...);
где элемент – это переменная или строка символов, заключенная в апострофы.
Например, оператор
write („ Значение В= „, В);
выводит на экран дисплея текст
Значение В=
а затем числовое значение переменной В.
Для вывода целых и действительных чисел можно указывать форматы в операторе WRITE. Формат указывается через двоеточие после переменной. Для действительных чисел формат состоит из двух величин. Первая величина указывает на общее количество позиций для вывода числового значения переменной: знак числа, количество цифр в целой части, точку и количество цифр в дробной части, второе – количество позиций для вывода дробной части. Например, оператор WRITE (Y:5:2) осуществит вывод значения Y на экран и при этом для отображения значения Y будет отведено пять позиций, из них две – на дробную часть.
Для вывода целых чисел количество позиций для дробной части не указывается. Например, если необходимо вывести значение целого
13
числа N=125, то оператор вывода будет иметь вид: WRITE ('N=', N:3), т.е. для вывода числового значения N отведено 3 позиции.
Допускается использование оператора вывода writeln (элемент1, элемент2 ...), который сначала выводит значения переменных, а затем осуществляет переход на новую строку.
Оператор writeln обеспечивает пропуск одной строки и переход к началу новой строки.
Текст программы решения задачи, схема которой приведена в примере имеет вид:
Program rabota;
Var a,b,c,p,t,ha,hb,hc:real; Begin
Writeln(„vvod а,b,c‟);
Readln(a,b,c);
p:=(a+b+c)/2;
t:=2*sqrt(p*(p-a)*(p-b)*(p-c)); ha:=t/a;
hb:=t/b; hc:=t/c;
writeln („ha=‟,ha:6:2,‟ hb=‟,hb:6:2, „ hc=‟, hc:6:2); end.
Исходными данными для решения задачи являются значения длин сторон треугольника: a, b, c. Для ввода этих значений используется оператор Readln. В программе используется переменная p для вычисления полупериметра и вспомогательная переменная t для исключения повторений.
Вычисленные значения высот ha, hb, hc выводятся с соответствующими именами переменных. Когда выводятся элементы списка вывода, пробелы между ними не устанавливаются автоматически, поэтому необходимо непосредственно их указать в списке вывода. Для улучшения внешнего вида данных, которые выводятся на экран дисплея, используется форматированный вывод.
14
Задание
1. Изучить лекционный материал и методические рекомендации для выполнения задания.
2. Разработать алгоритм для расчета заданных переменных.
3. Составить программу на алгоритмическом языке Pascal.
4. Выполнить отладку и тестирование программы на компьютере.
5. Подготовить отчет о выполнении задания. Пример оформления отчета представлен в приложении 2.
6. Подготовить ответы на контрольные вопросы.
Варианты заданий
№ п/п |
Вид задания |
Исходные данные для контрольного расчета |
1 |
x = a 2 + bsin b f = a + b (a + x)sin x 2x + b |
a=1,25 b=3,8 |
2 |
a = cos2 x3 + x + z |
x=2,75 |
g = aez + 1 |
z=-5,2 |
|
3 |
æ x + 3a + y ö4 x z = ç ÷ - è 2x ø x + 3a - y f = zsin 2 x + a |
x=-7,25 a=0,124 y=2,5 |
4 |
a = c + cos b c - b d = a - b + e-a b a |
c=0,57 b=18,4 |
5 |
x - a p = x x + a x f = 3sin x + x 4p |
x=12,54 a=7,3 |
6 |
c = a - ea-b a - b z = 8,36 ×102 + c × cos2 a |
a=2,7 b=7,25 |
15
7 |
p = a + 2,3ab2 a + b x = p × sin 2 a + m |
m=10 a=3,25 b=0,25 |
8 |
0,98sin 2 x z = 15,1x - ln x x 4 a = - 36,04x 3 - z |
х=15,25 |
9 |
a = x 4 (tgb -1) b2x - x + b f = + a ba |
x=1,1 b=2,3 |
10 |
sin 4 x 2 + 1 z = x f = sin x + (cos2 x - z) |
x=1,25 |
11 |
r = vh + 1 + 3,14v2 v x = 3,14r 2 - v2h sin r |
v=1,2 h=0,57 |
12 |
3,089x 4 - 2 u = x - 1 1 + x + 1 f = (sin 4 x - 1 + u)2 |
x=1,57 |
13 |
b = a 3 (z + 2)× (2z + 1) æ z ö3 x = çz + + 2b -1÷ è z 2 + 1 ø |
a=1,2 z=0,55 |
14 |
a = e3 (x + z - y) + 2xyz b = (x yz + a ln z)3 - a - 3,7 |
x=1,4 y=1,2 z=1,57 |
15 |
x 2 + x - c p = x ln c z = psin c + b |
x=12,5 c=17,9 b=1,95 |
16 |
b = cos(a - p) + ac f = sin 2 a + b 1 + a |
a=1,27 c=2,5 |
16
17 |
d = sin æ a - ö + a 2 ç 1÷ è 3 ø p = (2a + 1)d + dcos(a + 3) |
a=7,35 |
18 |
z + 1 - ax 2 d = x + z b = d - ez sin 2 x |
z=18,7 x=1,57 a=0,3 |
19 |
c = 2 sin 2 (3,14 + z) f = x -1 + c ln x |
z=0,57 x=-3,7 |
20 |
z = 1 ln (a + bc2 ) ap f = x - z a |
a=0,5 p=1,1 b=3 c=1,2 x=18,9 |
21 |
a = x sin x b = a + ln (x + a)2 x - ex |
x=1,25 |
22 |
z = esin3 x + ln (x + ex ) d = z + z2 sin x |
x=1,57 |
23 |
a = (2p)1/ 2 × xp+1 b = a × e-x × e 2px |
x=3 p=4 |
24 |
f = 4 æ rg ö2 1 + ç ÷ è k ø d = 1 - f 3æ rg ö2 e ç1 + ÷ è k ø |
r=10,7 g=1,54 k=8 |
25 |
t = 1 + ln tg x cos x 2 d = t + 3,6 + bx 3,6 - bx |
x=8,28 b=1,5 |
26 |
y = 5cos x 2 + 3sin 2 x 2 x = z2 - sin z |
z=1,57 |
17
27 |
y = tgx + x + 1 z = cos(x + y)2 + sin 2 (x - y) |
x=7,3 |
28 |
x =a 3-a + a cos x + x 2 z = x - x |
a=1,54 |
29 |
x = ln 2 c2 -1,33 y = ex + e2x × sin x |
с=4,3 |
30 |
z 2 f = 0,48y + 1 + cos z y = 1 - e-z |
z=7,2 |
Контрольные вопросы
1. Что такое алгоритм?
2. Какими свойствами обладает алгоритм?
3. Какие способы используются для описания алгоритма?
4. Какие геометрические фигуры могут входить в блок-схему линейного алгоритма?
5. Каковы типовые структуры алгоритма?
6. Какова структура программы?
7. Как обозначается оператор присваивания?
8. Какой оператор позволяет осуществить ввод значения переменной во время выполнении программы?
9. Какой оператор позволяет вывести на экран текстовое сообщение?
10. Каким образом каждый оператор в программе отделяется друг от друга?
Скачано с www.znanio.ru
© ООО «Знанио»
С вами с 2009 года.