Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Belova_TM

.pdf
Скачиваний:
56
Добавлен:
06.05.2015
Размер:
2.46 Mб
Скачать

Программирование разветвленных алгоритмов в системе Delphi

71

1. Разработка алгоритма (рис. 3.4):

а) входные данные: x – действительная переменная. б) выходные данные: F – действительная переменная.

Нет Да

Нет Да

Рис. 3.4. Блок-схема алгоритма программы

2. Разработка формы (рис. 3.5, табл. 3.1):

Рис. 3.5. Внешний вид формы

72

Программирование разветвленных алгоритмов в системе Delphi

 

 

 

 

Таблица 3.1

 

 

Используемые компоненты

 

 

 

 

 

 

 

Имя

Страница

Настраиваемое

Значение

 

 

палитры

 

компонента

компонент

свойство

 

 

1.

Form1

Caption

Пример лабораторной

 

работы №3

 

 

 

 

 

 

2.

Edit1

Standard

Text

 

 

3.

Label1

Standard

Caption

Введите x

 

4.

Label2

Standard

Caption

Результат

 

5.

Label3

Standard

Caption

 

 

6.

Label4

Standard

Caption

Для вывода результата –

 

щелчок по метке «Результат»

 

 

 

 

 

 

3. Текст программы: unit Unit1; interface

uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;

type

TForm1 = class(TForm) Label1: TLabel; Label2: TLabel; Edit1: TEdit; Label3: TLabel; Label4: TLabel;

procedure Label2Click(Sender: TObject); private

{Private declarations } public

{Public declarations } end;

var

Form1: TForm1; implementation {$R *.dfm}

{обработчик события OnClick}

Программирование разветвленных алгоритмов в системе Delphi

73

procedure TForm1.Label2Click(Sender: TObject); var x,f:real;

begin

{преобразуем текст из Edit1 в вещественное число} x:=StrToFloat(Edit1.Text);

{вычисление f осуществляется по сооветствующей формуле} if x<0 then f:=sqr(sin(x))

else if (x>=0) and (x<=1.5) then f:=sqrt(x) else f:=cos(sqr(x));

{преобразуем числоf встрокуи покажем результат в метке} Label3.Caption:= FloatToStr(f);

end;

end.

Контрольные вопросы к главе 3

1.Вычислить значения выражений: a or b and not a при a=true и b=false; t and (p mod 3=0) при t=true, p=1010; (x*y<>0) and (y>x) при x=2, y=1; (x*y<>0) or (y>x) при x=2, y=1; not (a and b) при a=false, b=true.

2.Записать на Delphi выражение, истинное при выполнении данного условия:

х принадлежит отрезку [0,1]; x лежит вне отрезка [0,1];

x принадлежит отрезку [2,5] или [–1,1]; x лежит вне отрезка [2,5] или [–1,1].

3.Пояснить структуру и правила выполнения условных операторов.

4.Записать указанное действие в виде одного условного опе-

ратора:

 

2

(x) ï ðè

0 x 2,

sin

 

y=

 

 

x 0 è x 2.

cos(x2) ï ðè

 

 

 

 

74Программирование разветвленных алгоритмов в системе Delphi

5.Какое значение будет иметь переменная z после выполнения операторов?

z:=0; x:=1; y:= –1;

if x>0 then if y>0 then z:=1 else z:=2;

6.Какое значение будет иметь переменная z после выполнения операторов?

z:=1; x:= –1; y:=1;

if x>0 then if y>0 then z:= z + 5 else z:= z + 7;

7.Укажите ошибки в следующих операторах:

if 1<x<2 then x:=x+1; y:=0; else x:=0; y:=y+1;

8.Как можно изобразить схему алгоритма для оператора выбора, в котором селектор может принимать 5 вариантов значений?

9.Найдите ошибки в части программы:

procedure example;

var d: real; t: boolean; begin

case d of

2,3,5,7: t:=true; d:=t+1; 0,1,4..8,9: t:=false;

end;

end;

Задания к лабораторной работе № 3

1.Даны три действительных числа. Выбрать из них те, которые принадлежат интервалу (1, 5).

2.Даны действительные числа x, y (x<>y). Меньшее из этих двух чисел заменить их полусуммой, а большее – их удвоенным произведением.

3.Даны три действительных числа. Возвести в квадрат те из них, значения которых неотрицательны.

4.Если сумма трех попарно различных действительных чисел x, y, z меньше 1, то наименьшее из этих трех чисел заменить полу-

Задания к лабораторной работе № 3

75

суммой двух других; в противном случае заменить меньшее из x и y полусуммой двух оставшихся значений.

5.Даны действительные числа a, b, c, d. Если a<b<c<d, то каждое число заменить наибольшим из них; если a>b>c>d, то числа оставить без изменения; в противном случае все числа заменить их квадратами.

6.Определить, является ли шестизначное целое число счастливым. (Число называется счастливым, если сумма первых трех цифр равна сумме его последних трех цифр.)

7.Для решения следующей задачи написать программу, которая печатает true или false в зависимости от того, выполняется

или нет указанное условие: для произвольных вещественных чисел a, b, c определить, имеет ли уравнение ax2+bx+c=0 хотя бы одно вещественное решение.

8.Для решения следующей задачи написать программу, которая печатает true или false в зависимости от того, выполняется или нет указанное условие: определить, равна ли сумма двух первых цифр заданного четырехзначного числа сумме двух его последних чисел.

9.В некотором учебном заведении действуют следующие правила приема. Абитуриенты сдают два экзамена, которые оцениваются по 100 баллов каждый. Если абитуриент набирает не менее 150 баллов, то это дает право поступать на дневное отделение, от 100 до 149 – на вечернее отделение; ниже 100 баллов означает отказ в приеме на учебу. Написать программу, которая в зависимости от суммы набранных баллов сообщает абитуриенту его права на поступление.

10.Составить программу, позволяющую получить словесное описание отметок. (1 − «плохо», 2 – «неудовлетворительно», 3 – «удовлетворительно», 4 – «хорошо», 5 – «отлично».)

11.Для решения следующей задачи написать программу, которая печатает true или false в зависимости от того, выполняется или нет указанное условие: определить, есть ли среди цифр заданного трехзначного числа одинаковые.

12.В старояпонском календаре был принят 60-летный цикл, состоявший из пяти 12-летных подциклов. Подциклы обозначались

76

Программирование разветвленных алгоритмов в системе Delphi

названиями цвета: зеленый, красный, желтый, белый и черный. Внутри каждого подцикла годы носили названия животных: крысы, коровы, тигра, зайца, дракона, змеи, лошади, овцы, обезьяны, курицы, собаки и свиньи (1984 год – год зеленой крысы – был началом очередного цикла). Написать программу, которая вводит номер некоторого года нашей эры и печатает его название по старояпонскому календарю.

13.Написать программу, которая печатает true, если дата d1, m1 предшествует (в рамках года) дате d2, m2 и значение false в противном случае.

14.Написать программу, которая по первой букве имени выводит на экран имя полностью (Иван, Петр, Николай, Владимир, Георгий).

15.Написать программу, которая по введенной цифре 0<k<5 печатает название этой цифры на русском и английском языках.

16.Дано целое число k (1 k 365). Определить, каким будет k-й день года – выходным или рабочим, если 1 января – понедельник.

17.Дано действительное число x. Вычислить F, если:

5

ï ðè

x<0,

 

 

2 x

ï ðè

0 x<1,

F= x

 

11

sin πx

2

в о стальн ых случаях.

x

 

 

18. Дано действительное число x. Вычислить F, если:

 

0

ï ðè

 

x<0,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

15

 

7

 

 

 

 

 

 

F=

 

 

+5,4

 

ï ðè

0 x<1,

 

 

x +x

 

 

 

 

4

в о стальн ых

случаях.

 

x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

19. Дано действительное число x. Написать программу для

вычисления F:

 

 

 

 

 

 

 

 

 

x+1,14

 

ï ðè

 

x<0,

 

F=

 

2 x

ï ðè

0 x<10,

x

 

 

 

 

3

x sin πx

2

â

о стальн ых случаях.

 

cos

 

 

20. Дано действительное число x. Написать программу для вычисления F:

 

 

Задания к лабораторной работе № 3

77

1,5

ï ðè

x<3,

 

 

 

 

 

 

x+lg

x ï ðè 3 x 12,

 

F= ln

 

3 x4+x2+5,34 в о стальн ых случаях.

21.Написать программу, которая по первой букве названия города выводит на экран название города полностью (Курск, Москва, Тула, Новгород, Воронеж).

22.Написать программу, которая по первой букве фамилии выводит на экран фамилию полностью (Иванов, Петров, Сидоров, Мышкин, Шишкин).

23.Даны координаты центра и радиус окружности. Определить принадлежность некоторой точки, имеющей координаты (x,y), окружности.

24.Даны три различных числа: a, b, c. Упорядочить эти числа по возрастанию таким образом, чтобы a соответствовало наименьшее число, b – среднее число, c – наибольшее.

25.Написать программу, которая по номеру (от 1 до 7) выводит название дня недели.

26.Написать программу, которая по номеру (от 1 до 12) выводит название месяца года.

27.Даны два числа и один из знаков арифметической операции: +, –, /, *. Вычислить результат соответствующего арифметического действия.

4. ПРОГРАММИРОВАНИЕ ПРОСТЫХ ЦИКЛИЧЕСКИХ АЛГОРИТМОВ В СИСТЕМЕ DELPHI

В данном разделе осуществляется изучение операторов цикла языка Delphi, приобретение навыков программирования простых циклических алгоритмов, ввода, компиляции и отладки программ.

На языке Delphi существуют три оператора цикла:

1.Цикл с предусловием (while).

2.Цикл с постусловием (repeat).

3.Цикл со счетчиком (for).

Оператор цикла while

Рассмотрим схему алгоритма оператора while (рис. 4.1).

Нет

Условие While <Условие> do

<Тело цикла>;

Да

Тело цикла

Рис. 4.1. Схема алгоритма оператора while

Условие представляет собой булевское выражение, тело цикла – один простой или составной оператор. Если тело цикла состоит из нескольких операторов, то эти операторы нужно заключать в операторные скобки. Если результат вычисления условия равен true (правда), то тело цикла выполняется и снова осуществляется переход к проверке условия. Если результат вычисления условия равен false (ложь), то происходит выход из цикла и переход к оператору, следующему за циклическим оператором while. Если перед первым выполнением цикла значение выражения было false, тело цикла вообще не выполняется и происходит переход к следующему оператору.

Пример

Вычислить сумму нечетных чисел в интервале 0 – 10.

Программирование простых циклических алгоритмов в системе Delphi 79

var K, S: integer; begin

S:=0; K:=1; while K<11 do begin

S:=S+K;

K:=K+2;

end;

end;

Оператор цикла repeat

Рассмотрим схему алгоритма оператора repeat (рис. 4.2).

 

 

 

Repeat <Тело цикла>

 

 

 

 

Тело цикла

 

Until <Условие>;

 

 

 

 

Да

Условие

Нет

Рис. 4.2.Схема алгоритма оператора repeat

Условие представляет собой булевское выражение, тело цикла – один или несколько операторов. Тело цикла оператора repeat выполняется, пока условие равно false. Если тело цикла состоит из нескольких операторов, то эти операторы можно не заключать в операторные скобки. Тело цикла оператора repeat выполняется, по крайней мере, один раз, так как проверка условия выполняется после тела цикла. Поэтому данный оператор цикла используется реже по сравнению с другими операторами цикла.

Пример

Вычислить сумму чисел от 1 до 100. var d, s: integer;

begin d:=1; s:=0; repeat s:=s+d;

80 Программирование простых циклических алгоритмов в системе Delphi

d:=d+1; until d>100;

end;

Оператор цикла for

Рассмотрим схему алгоритма оператора for (рис. 4.3).

 

k:=s1, s2

 

For k := s1 to s2 do

 

 

 

 

 

 

<Тело цикла>;

 

 

 

 

 

 

 

 

 

Тело цикла

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 4.3. Схема алгоритма оператора for

В операторе цикла for можно использовать только два значения шага счетчика цикла: либо +1, либо –1. В теле цикла оператора for не допускаются изменения счетчика цикла.

for <счетчик цикла>:=s1 to s2 do <тело цикла>;

Счетчик цикла увеличивается на 1 при каждом выполнении тела цикла.

for <счетчик цикла>:=s1 downto s2 do <тело цикла>;

Счетчик цикла уменьшается на 1 при каждом выполнении тела цикла.

s1 и s2 – выражения, определяющие соответственно начальное и конечное значения счетчика цикла. Тело цикла – один простой или составной оператор. Счетчик цикла, его начальное и конечное значения должны принадлежать к одному и тому же типу данных. Счетчик цикла может быть только порядкового типа.

Не допускается вещественный тип.

Тело цикла не выполнится ни разу, если для оператора for… tо начальное значение счетчика s1 больше конечного значения s2, а для оператора for… downto начальное значение счетчика s1 меньше конечного значения s2.

Приведённые ниже примеры операторов циклов демонстрируют значения, принимаемые счетчиками циклов в процессе выполнения программы.