Razdel_13_Osn_alg_i_i_progr_ya_11_05_10
.pdfЧасть 13. Основы алгоритмизации и программирования
в) если x < 0 |
|
|
г) выбор |
|
|
то |
z:=lg(-x) |
при с=0 : z:=1 |
иначе z:=sqrt(x+1) |
при с=1 : z:=x |
|
все |
|
при с=2 : z:=3*x*x - 1/2 |
если z>=0 |
|
при с=3 : z:=x*x*x - 3*x/2 |
то |
F:=2*z+1 |
иначе z:=2*x**4 - 3*x/2 |
иначе F:=sin(z) |
все |
|
|
все |
|
|
|
д) если abs(x)+abs(y) < r |
|
|
|
е) если x>1 |
|
|
|
то |
z:=sqrt(x*x+y*y) то если y>1 |
||
иначе z:=max(abs(x), abs(y)) |
то v:=x+y |
||
все |
|
|
|
иначе v:=x-y |
|
|
|
все |
|
|
|
ж) если (x-a)**2 +(y-b)**2 < r*r |
|
||
иначе если y>0 |
|
|
|
то |
z:=abs(x)+abs(y) |
|
|
|
то v:=y-x |
|
|
иначе z:=x+y иначе v:=-x-y
все
все
все
12. б) |
в) |
г) |
д)
71
Часть 13. Основы алгоритмизации и программирования
13. б) 81; |
в) 21; |
д) 11; |
е) 44. |
14. б) 0; |
в) 13; |
д) 52; |
е) 14. |
15.
б) алг Треугольник1(арг вещ a,b,UgolC, рез вещ c, UgolA, UgolB, S)
нач
ввод a, b, UgolC c:=sqrt(a*a+b*b-2*a*b*cos(UgolC)) UgolA:=arcsin(a*sin(UgolC)/c) UgolB:=arcsin(b*sin(UgolC)/c) S:=b*c*sin(UgolA)/2
вывод c, UgolA, UgolB, S
кон
в) алг Треугольник2(арг вещ a,b,c, рез вещ Radius,UgolA)
нач вещ p
ввод a,b,c p:=(a+b+c)/2
UgolA:=2*arctg(sqrt((p-b)*(p-c)/(p*(p- a))))*180/3.14
Radius:=a*b*c/(4*sqrt(p*(p-a)*(p-b)*(p-c))) вывод Radius, UgolA
кон
г) алг Объем и Площадь Пирамиды(арг вещ a,UgolAGrad,
рез вещ V, S)
нач вещ H,SBase,UgolARad
72
Часть 13. Основы алгоритмизации и программирования
| H - высота пирамиды; SBase - площадь ос-
нования
ввод a,UgolAGrad
UgolARad:=UgolAGrad*3.14/180
SBase:=a*a*sqrt(3)/4
H:=a*sqrt(3)/6*tg(UgolARad)
V:=SBase*H/3
S:=SBase*(1+1/cos(UgolARad))
вывод V, S
кон
д) алг Объем и Площадь конуса(арг вещ
RBig,RSmall,Ugol, рез вещ V, S)
нач вещ H,L
ввод RBig,RSmall,Ugol H:=(RBig-RSmall)*tg(Ugol) L:=(RBig-RadSmall)/cos(Ugol) V:=1/3*3.14*H*(RSmall**2 + RBig**2 +
RSmall*RBig)
S:=3.14*L*(RBig+RSmall)
вывод V, S
кон
е) алг Параметры пирамиды (арг вещ a,UgolA, рез вещ
V, S, Sесtion)
нач вещ H
ввод a,UgolA
H:=a*sqrt(2)/2*tg(UgolA)
V:=1/3*a*a*H
Sесtion:=a*H*sqrt(2)/2
73
Часть 13. Основы алгоритмизации и программирования
S:=a*a*(1+sqrt(2*tg(UgolA)**2+1))
вывод V, S, Sесtion
кон
16.
б) алг Количество положительных(арг вещ a,b,c, рез
цел k)
надо | k - количество положительных чисел среди чисел a,b,c
нач |
|
|
ввод |
a,b,c; |
k:=0 |
если |
a>0 |
|
то |
k:=k+1 |
|
все |
|
|
если |
b>0 |
|
то |
k:=k+1 |
|
все |
|
|
если |
c>0 |
|
то |
k:=k+1 |
|
все |
|
|
вывод k |
|
|
кон |
|
|
в) алг Преобразование(арг рез вещ a,b) |
||
надо |
|меньшее из a,b увеличено вдвое |
|
нач |
|
|
ввод |
a,b |
|
если |
a>b |
|
то |
b:=b*2 |
|
74
Часть 13. Основы алгоритмизации и программирования
иначе a:=a*2
все
вывод a,b
кон
г) алг Подобие треугольников(арг вещ a,b,c,d, рез
лог Otvet)
дано | a,b и c,d - катеты двух треугольников
надо | Otvet=да, если треугольники подобны
нач
ввод a,b,c,d
если (a*d=с*b) или (a*c=d*b)
то Otvet:=да иначе Otvet:=нет
все
вывод Otvet
кон
д) алг Точки(арг вещ xA,yA,xB,yB,xC,yC, рез лит
Otvet)
нач вещ DistA,DistB,DistC
ввод xA,yA,xB,yB,xC,yC DistA:=sqrt(xA**2 + yA**2) DistB:=sqrt(xB**2 + yB**2) DistC:=sqrt(xC**2 + yC**2)
если (DistA < DistB) и (DistA < DistC)
то Otvet:="Это точка А"
иначе если DistB < DistC
то Otvet:="Это точка B"
иначе Otvet:="Это точка C"
75
Часть 13. Основы алгоритмизации и программирования
все
все
вывод Otvet
кон
е) алг Принадлежность кольцу(арг вещ x,y,r1,r2, рез
лог Otvet)
дано | r2>r1
надо | Otvet=да, если точка (x,y) принадлежит
кольцу
| c внутренним радиусом r1 и внешним радиу-
сом r2
нач
ввод x,y,r1,r2
если (x*x+y*y<=r2*r2) и (x*x+y*y>=r1*r1)
то Otvet:=да иначе Otvet:=нет
все
вывод Otvet
кон
ж) алг Упорядочение по возрастанию(арг рез вещ a, b,
c)
надо | числа a, b, c упорядочены по возраста-
нию |
|
|
|
нач вещ t |
|
|
|
ввод |
a, |
b, c |
|
если |
a>b |
|
|
то |
t:=a; a:=b; b:=t |
| меняются местами |
|
значения |
a и |
b |
|
76
Часть 13. Основы алгоритмизации и программирования
все |
|
|
|
|
если |
a>c |
|
|
|
то |
t:=a; |
a:=c; |
c:=t |
| меняются местами |
значения |
a и c |
|
|
|
все |
|
|
|
|
если |
b>c |
|
|
|
то |
t:=b; |
b:=c; |
c:=t |
| меняются местами |
значения |
b и c |
|
|
|
все |
|
|
|
|
вывод a, b, c
кон
77
Часть 13. Основы алгоритмизации и программирования
4 Алгоритмы линейной и разветвляющейся структуры
Пример 1. Простейший алгоритм, запрашивающий имя и затем привет-
ствующий его обладателя.
Тест
Данные
Имя = "Тимур"
Результат
"Привет, Тимур!"
Школьный АЯ
алг Знакомство (арг лит Имя, резлит t)
нач вывод "Как тебя зовут ?"
ввод Имя
t := "Привет, " + Имя + "!" | "+" - операция сцепки
вывод t
кон
Turbo Pascal
Program Hello;
Var Name: String; {Описание переменной Name строко-
вого типа}
BEGIN
Write('Как тебя зовут ? '); {Вывод на экран текста
вопроса} |
|
ReadLn(Name); |
{Ввод c клавиатуры име- |
ни} |
|
78
Часть 13. Основы алгоритмизации и программирования
WriteLn('Привет, ', Name, '!'); {Вывод на экран приветствия}
ReadLn
END.
Здесь последний оператор ReadLn позволяет видеть на экране результаты работы программы, пока не будет нажата клавиша <Enter>.
Результаты работы Pascal-программы
Как тебя зовут ? Тимур |
<Enter> |
Привет, Тимур !
QBasic
CLS
INPUT "Как тебя зовут ? ", Name$
PRINT "Привет, "; Name$; "!"
END
Пример 2. Определить объём и площадь боковой поверхности цилиндра с заданными радиусом основания R и высотой H.
|
|
|
Тест |
||||
|
|
|
|
|
|
|
|
Данные |
|
|
Результат |
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
R = 1 |
|
H = 1 |
|
|
V = 3.14 |
|
S = 6.28 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Школьный АЯ
алг Цилиндр (арг вещ R, H, рез вещ V, S)
нач вещ Pi
Pi := 3.14
79
Часть 13. Основы алгоритмизации и программирования
V := Pi * R**2 * H
S := 2 * Pi * R * H
кон
Turbo Pascal
Program Cylinder;
Uses Crt; {Подключение библиотеки Crt}
Var
R, {радиус основания цилиндра}
H, {высота цилиндра }
V, {объем цилиндра }
S: Real; {площадь боковой поверхности цилиндра}
BEGIN
ClrScr; {Вызов из библиотеки Crt процедуры очистки экрана}
Write('Введите высоту цилиндра : '); ReadLn(H);
Write('Введите радиус основания : '); ReadLn(R);
V := Pi * R * R * H;
S := 2 * Pi * R * H; WriteLn;
WriteLn('Объем цилиндра = ', V : 5 : 2); {Здесь 5 -
общее
количество позиций, занимаемых переменной V при выводе,
а 2 - количество позиций в дробной части значе-
ния V}
WriteLn('Площадь боковой поверхности = ', S : 5 :
2); ReadLn
END.
80