Belova_TM
.pdfПрограммирование линейных алгоритмов в системе Delphi |
61 |
Задание. Даны целые числа х, у. Вычислить F =
|
2 |
|
y |
|
|
|
1 |
|
x y |
|
|
|
|
|
|
||||||||
x |
|
|
|
|
/ |
|
|
. |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
1. Разработка алгоритма (рис. 2.3):
а) входные данные: x, y – целые числа;
б) выходные данные: F – действительное число.
x,y
Вычисление F
F
Рис. 2.3. Блок-схема алгоритма задачи
2. Разработка формы (рис. 2.4, табл. 2.6):
Рис. 2.4. Внешний вид формы
62 |
Программирование линейных алгоритмов в системе Delphi |
|
||||
|
|
|
|
|
Таблица 2.6 |
|
|
|
|
Используемые компоненты |
|
||
|
|
|
|
|
|
|
|
|
Имя |
Страница |
Настраиваемые |
|
|
|
|
палитры |
Значение |
|
||
|
компонента |
компонент |
свойства |
|
|
|
|
1. |
Form1 |
– |
Caption |
Пример лабораторной |
|
|
работы №2 |
|
||||
|
|
|
|
|
|
|
|
2. |
Edit1 |
Standard |
Text |
|
|
|
3. |
Edit2 |
Standard |
Text |
|
|
|
4. |
Button1 |
Standard |
Caption |
Результат |
|
|
5. |
Label1 |
Standard |
Caption |
ВНИМАНИЕ! Вводить толь- |
|
|
ко целые числа! |
|
||||
|
|
|
|
|
|
|
|
6. |
Label2 |
Standard |
Caption |
Введите x |
|
|
7. |
Label3 |
Standard |
Caption |
Введите у |
|
|
|
|
|
|
Для вывода результата – |
|
|
8. |
Label4 |
Standard |
Caption |
щелчок по кнопке «Резуль- |
|
|
|
|
|
|
тат» |
|
|
9. |
Label5 |
Standard |
Caption |
|
|
|
10. Label6 |
Standard |
Caption |
Ввод числа – клавиша TAB |
|
3. Текст программы:
unit Unit1; interface
uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type
TForm1 = class(TForm) Label1: TLabel; Label2: TLabel; Label3: TLabel; Edit1: TEdit;
Edit2: TEdit;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Button1: TButton;
procedure Button1Click(Sender: TObject); private
Программирование линейных алгоритмов в системе Delphi |
63 |
{Private declarations } public
{Public declarations } end;
var
Form1: TForm1; implementation
{$R *.dfm}
{обработчик события OnClick} procedure TForm1.Button1Click(Sender: TObject); var x,y:integer; f:real;
begin
{преобразование текста из Edit1 в целое число} x:= StrToInt(Trim(Edit1.Text));
{преобразование текста из Edit2 в целое число} y:= StrToInt(Trim(Edit2.Text));
{вычисление f} f:=(sqr(x)+sqrt(abs(y)))/(1+abs(x*y));
{преобразование числа f в строку и вывод результата} label5.caption:=FloatToStr(f);
end;
end.
Контрольные вопросы к главе 2
1.Какую структуру должна иметь программа?
2.Верно ли, что в программе, написанной на языке Delphi, надо описывать все используемые в ней переменные?
3.Записать на Delphi следующие числа:
–27,8*10-7; 106; 0,5*106; 6,38; 2; 4/1000.
4.Записать следующие числа без десятичного порядка: –0.00027Е+4; 555Е-3; 1Е1.
5.Привести примеры целых чисел, не представимых на
Delphi.
6.Записать на Delphi следующие формулы: a+bx+cyz; (1+x)2; cos3x2; |a+bx|; sin 8x; log20,4x; arcctg 103; arcsin x; x5; (1+x)1/3; x-2;
e|x-y|; ln(1+3,3x); 3x 1; tg3 x5; ctg2 x3; x 3; 157x5 1;
64 |
Программирование линейных алгоритмов в системе Delphi |
ab |
+ |
c |
; |
x+y |
|
a2 |
. |
|
|
|
|
||||
c ab |
al |
x y |
7.Вычислить значения выражения: trunc(6,9); trunc(6,54); int(4,56); frac(45,67); round(34,56); round(12,11); round(–2,6); int(38,976); trunc(184,7).
8.Вычислить значение выражений:
20 div 5; |
20 mod 7; |
2 div 5; |
2 mod 7. |
9.Указать порядок выполнения операций в выражении: a mod b + a div b*c/a.
10.Если у – вещественная переменная, а n – целая, то какие из следующих операторов присваивания правильные, а какие нет и почему:
y:=n+1; |
n:=y–1; |
n:=4.0; |
y:=trunc(y); |
n:=n div 2; |
n:=sqr(sqr(n)). |
y:=y div 2; |
n:=n/2; |
|
11.Какое значение будет иметь переменная х после выполнения операторов, если х:=10; х:=х+3?
12.С помощью каких средств языка Delphi можно осуществить ввод данных?
13.С помощью каких средств языка Delphi можно осуществить вывод данных?
14.Каким образом можно отредактировать форму, предложенную Delphi, с тем, чтобы создать свой проект?
Задания к лабораторной работе № 2
1.Вычислить дробную часть среднего геометрического трех заданных положительных чисел.
2.По заданным коэффициентам и правым частям системы
уравнений |
a |
x+a |
x = c |
1 |
1 |
1 найти ее решение в предположении, что |
a2x+a2x =c2
определитель системы не равен нулю.
Задания к лабораторной работе № 2 |
65 |
3.По координатам вершин некоторого треугольника найти его площадь и периметр.
4.По длинам двух сторон некоторого треугольника и углу (в градусах) между ними найти длину третьей стороны и площадь этого треугольника.
5.Найти произведение цифр заданного четырехзначного числа.
6.Определить число, полученное выписыванием в обратном порядке цифр заданного трехзначного числа.
7.Присвоить целой переменной d первую цифру из дробной части положительного вещественного числа х (так, если х=32,597,
то d=5).
8.Целой переменной присвоить сумму цифр трехзначного целого числа k.
9.Идет k-я секунда суток. Определить, сколько полных часов
(h)и полных минут (m) прошло к этому моменту (например, h=3 и m=40, если k=3*3600+40*60+57).
10.Даны катеты прямоугольного треугольника. Найти его периметр и площадь.
11.Даны два действительных числа. Найти среднее арифметическое и среднее геометрическое этих чисел.
12.Даны два действительных числа. Найти среднее арифметическое этих чисел и среднее геометрическое их модулей.
13.Даны гипотенуза и катет прямоугольного треугольника. Найти второй катет и радиус вписанной окружности.
14.Известна длина окружности. Найти площадь круга, ограниченного этой окружностью.
15.Найти площадь кольца, внутренний радиус которого равен 20, а внешний заданному числу r (r>20).
16.Даны основания и высота равнобедренной трапеции. Найти ее периметр и площадь.
17.Даны два числа. Найти их сумму, разность, произведение и частное от деления первого числа на второе.
18.Вычислить дробную часть среднего арифметического трех заданных положительных чисел.
19.По координатам вершин некоторого прямоугольника найти его площадь и периметр.
66Программирование линейных алгоритмов в системе Delphi
20.Дана сторона равностороннего треугольника. Вычислить площадь и периметр треугольника.
21.Дана сторона квадрата. В квадрат вписана окружность. Найти сторону и площадь квадрата, вписанного в эту окружность.
22.Дан радиус окружности. В окружность вписан квадрат. Найти площади окружности и квадрата.
23.Равносторонний треугольник задан координатами вершин. Найти площадь и периметр треугольника.
24.Даны x, y, z. Вычислить a, b, если:
|
|
|
|
|
3+ey 1 |
|
|
|
|
|
|
(y x)2 |
|
|
|
y x |
|
3 |
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
|
|
a= |
|
|
|
|
|
|
; b=1+ |
y x |
+ |
|
|
|
+ |
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
1+x |
y tgz |
|
|
|
|
|
|
|
|
2 |
|
|
|
3 |
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
25. |
Даны x, y, z. Вычислить a, b, если: |
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||
|
a = y + |
|
|
x |
|
|
|
|
; b=(1 + tg2z/2)0.4. |
|||||||||||||||||||
|
|
2 |
2 |
|
|
|
|
|||||||||||||||||||||
|
|
|
|
|
|
y |
+ |x /y + x/4| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
26. |
Даны x, y, z. Вычислить a, b, если: |
z2 |
|
|
|
|
|
|
|
|
|
|||||||||||||||||
|
|
a = |
|
2 cos(x-/6) |
; b = 1 + |
|
|
|
|
|
. |
|
|
|
||||||||||||||
|
|
1/21 + sin(y) |
|
3 + z/5 |
|
|
|
|
||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
27. |
Даны x, y, z. Вычислить a, b, если: |
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||
|
a = |
|
|
|
1 + sin2(x + y) |
|
|
|
+ x ; b = cos2(аrctg1/z) . |
|||||||||||||||||||
|
|
2 + |x – 2x/(1 + xy)| |
|
|
||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
Примечания: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
, где a, b – сторо- |
|||||||||||||||||||||||||
1. Сторона треугольникаc= |
|
a2+b2 2 a b cos(g) |
ны треугольника; g – угол между сторонами a и b.
2. Площадь треугольникаs= p (p a) (p b) (p c), где a, b, c – сто-
роны треугольника; p – полупериметр.
3. Радиус вписанной в прямоугольный треугольник окружности r=s/p, где s – площадь треугольника; p – полупериметр треугольника.
2
4. Площадь окружности s= πr , длина окружности l=π2r, где r – радиус окружности.
3. ПРОГРАММИРОВАНИЕ РАЗВЕТВЛЕННЫХ АЛГОРИТМОВ В СИСТЕМЕ DELPHI
В данном разделе изучаются логические операции, условные операторы, составной оператор и оператор выбора, а также осуществляется приобретение навыков программирования разветвленных алгоритмов.
Составной оператор
Составной оператор представляет собой группу операторов, отделенных друг от друга точкой с запятой и ограниченную операторными скобками begin и end.
Пример begin
оператор 1; оператор 2;
. . .
оператор n;
end;
Пример begin
a:=a+12;
c:=a*b+2;
end;
Составной оператор воспринимается как единое целое и может находится в любом месте программы.
В языке Delphi имеются две формы условного оператора − полный и неполный.
Полный условный оператор
Ключевые слова if, then, else означают соответственно «если», «то», «иначе». Условие – выражение булевского типа. При записи условия могут использоваться операции отношения =, <>, >, >=, <, <= и логические операции not, and, or, xor.
Рассмотрим блок-схему алгоритма полного условного оператора (рис. 3.1).
68 |
Программирование разветвленных алгоритмов в системе Delphi |
..
Да Условие Нет
if <условие>then s1
s1 s2
else s2 ;
...
Рис. 3.1. Блок-схема алгоритма полного условного оператора
Здесь s1, s2 – один простой или составной оператор.
Если после ключевых слов then или else следует выполнить не один, а несколько операторов, то необходимо использовать составной оператор.
Приоритеты выполнения операций:
1)not;
2)* , / , div, mod, and;
3)+, –, or, xor ;
4)> , >=, <, <=, =, <>.
Результатом вычисления условия может являться истина (true) или ложь (false). Если условие истинно, то выполняется оператор s1, иначе – оператор s2.
Пример
a:=1; b:=2; c:=0; if a>b then c:=a
else c:=b;
Так как выражение a>b ложно, то будет выполнятся оператор после else, т.е. c:=b.
Неполный условный оператор
Рассмотрим блок-схему алгоритма неполного условного оператора (рис. 3.2).
Нет |
Условие |
|
Да |
if <условие>the |
|
|
|
|
|||
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
s1
...
Рис. 3.2. Блок-схема алгоритма неполного условного оператора
Программирование разветвленных алгоритмов в системе Delphi |
69 |
Если результат вычисления условия – истина, то выполняется оператор s1. Если ложь, то выполняется оператор, непосредственно следующий за условным оператором if.
Пример
a:=2; b:=8; c:=0; if a>b then c:=a+b; c:=c+12;
Результатом выполнения данного примера будет c=12, так как выражение a>b ложно и оператор c:=a+b не будет выполняться. Если после ключевого слова then следует выполнить не один, а несколько операторов, то необходимо использовать составной оператор.
Оператор выбора Case
Оператор выбора Case является обобщением оператора if и позволяет сделать выбор из произвольного числа вариантов.
Case <выражение-селектор> of <список1>:<оператор1>; <список2>:<оператор2>;
. . .
<списокN>:<операторN> else <оператор>
end;
Оператор Case работает следующим образом. Сначала вычисляется значение выражения-селектора, затем обеспечивается реализация того оператора, константа выбора которого равна текущему значению селектора. Если ни одна из констант не равна текущему значению селектора, выполняется оператор, стоящий за словом else. Слово else может отсутствовать. Если слово else отсутствует, то активизируется оператор, стоящий непосредственно за словом end, т.е. первый оператор за границей Case. Селектор может иметь порядковый тип. Вещественный тип нельзя использовать. Тип констант в любом случае должен совпадать с типом селектора.
Примеры Case
1.Селектор целочисленного типа: Case k of
1:z:=k+10;
2:z:=k+100;
70 |
Программирование разветвленных алгоритмов в системе Delphi |
3..9: z:=k+1000; 11,14,17..20: z:=k+5000 end;
2.Селектор символьного типа: Case n of
‘A’, ‘a’: Label1.Caption:=’арбуз’; ‘В’, ‘в’: Label1.Caption:=’вишня’; ‘C’, ‘c’: Label1.Caption:=’слива’;
else Label1.Caption:=’Ошибка ввода’ end;
Приведем схему алгоритма для примера 2 (рис. 3.3): |
||
▪ ▪ ▪ |
|
|
N |
|
|
N=′А′, ′а′. |
Вывод текста |
|
Вывод текста |
||
«ошибка ввода» |
||
′арбуз′ |
|
|
N=′В′, ′в′. |
|
|
Вывод текста |
|
|
′вишня′ |
|
|
N=′C′, ′c′. |
|
|
Вывод текста |
|
|
′слива′ |
|
|
|
▪ ▪ ▪ |
Рис. 3.3. Блок-схема алгоритма оператора выбора
В первом примере показан способ задания метки интервалом 3..9, а во втором примере – с помощью перечисления.
Пример программирования разветвленного алгоритма
Задание. Вычислить значение функции
|
sin |
2 |
x, |
åñëè |
x 0, |
|
|
||||
õ, |
|
|
åñëè |
0 õ 1,5, |
|
F |
|
|
|||
|
|
|
|
åñëè |
x 1,5. |
cos x2, |