Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Новая методичка.rtf
Скачиваний:
6
Добавлен:
22.07.2019
Размер:
7.64 Mб
Скачать

Var z: integer;

begin

randomize; if a[1]='П' then

Label1.Top:=random(Form1.Height-Label1.Height-10);

if j<20 then begin z:=random(7);

case z of

0:col:='r';

1:col:='b';

3:col:='g';

4:col:='y';

5:col:='m';

6:col:='l';

end;

end;

if (j > 245)or(j<20) then h:=-h;

case col of

'r': r:=j;

'g': g:=j;

'b': b:=j;

'y': begin r:=j; g:=j; end;

'm': begin r:=j; b:=j; end;

'l' : begin g:=j; b:=j; end;

end;

Label1.Caption:=

'('+IntToStr(r)+','+IntToStr(g)+','+IntToStr(b)+')';

Label1.Font.Color:= rgb(r,g,b); inc(j,h);end;

Пример 1.2 "Убегающая" кнопка

На форме появляется текст вопроса “Вы хотели бы закончить МИРЭА?” и две кнопки “Да”и “Нет”. При попытке нажать кнопку “Да” она убегает. При нажатии на кнопку “Нет” выводится текстовое сообщение “Ну и зря”.

Процедура обработки движения мыши

procedure TForm1.Button1MouseMove

(Sender: TObject; Shift: TShiftState; X,Y: Integer);

begin

if x<=Button1.Width div 2 then

Button1.Left := Button1.Left +1

else

Button1.Left:= Button1.Left -1;

if y<=Button1.Height div 2 then

Button1.Top := Button1.Top +1

else Button1.Top := Button1.Top -1;

if (Button1.Top < 0)or (Button1.Left < 0)or

(Button1.Top >Height-Button1.Height-15)

or (Button1.Left > Width-Button1.Width-15)

then with Button1 do begin

Left := 128; Top:=224;

end; end;

Процедура обработки щелчка на кнопке "Нет"

procedure TForm1.Button2Click(Sender: TObject);

begin

Label1.Caption := 'Ну и зря.';

Label1.Left := (Width-Label1.Width) div 2;

end;

Лабораторная работа № 2

Алгоритмизация и программирование решения задач

линейной и разветвляющейся структуры

с использованием одной формы

Цель работы:

  • изучить особенности ввода и вывода данных стандартных типов языка Object Pascal,

  • получить навыки написания программ линейной и разветвляющейся структуры (операторы IF и CASE),

  • получить навыки работы с функциями перевода из строкового представления данных в числовые и обратно.

Теоретическое введение

Вся информация, вводимая пользователем с клавиатуры через окно редактирования (объект Edit свойство Text или объект Memo свойства Lines), имеет текстовую или строковую форму представления. Например, введенное пользователем значение "123" программа воспринимает не как число 123, а как строку символов "123". Для дальнейшей обработки необходимо перевести число из строкового представления в целое (функция StrToInt) или вещественное (функция StrToFloat), аналогично при выводе информации надо воспользоваться функциями преобразования из числовой формы в строковую (функции StrToInt, StrToFloat).

Пример 2.1 Калькулятор

Постановка задачи: Даны два вещественных числа. Выполнить над ними выбранную пользователем арифметическую операцию, вывести результат.

Описание переменных: первый, второй операнды, результат - все вещественного типа.

Алгоритм:

  1. Ввести значение первого операнда.

  2. Перевести значение первого операнда из строкового представления в вещественное представление.

  3. Ввести значение второго операнда.

  4. Перевести значение второго операнда из строкового представления в вещественное представление.

  5. Обработать выполнение выбранной пользователем арифметической операции.

  6. Для операции "деление", проверить не равно ли нулю значение второго операнда, если его значение равно нулю, то вывести сообщение об ошибке.

  7. Перевести результат из вещественной формы представления в строковую форму.

  8. Вывести результат.

Процедура обработки щелчка на кнопке "Сложить":

procedure TForm1.Button1Click(Sender: TObject);

begin

edit3.Text:=floattostr(strtofloat(edit1.text)+strtofloat(edit2.text));

end;

Процедура обработки щелчка на кнопке "Вычесть"

procedure TForm1.Button2Click(Sender: TObject);

begin

edit3.Text:=floattostr(strtofloat(edit1.text)-strtofloat(edit2.text));

end;

Процедура обработки щелчка на кнопке "Умножить"

procedure TForm1.Button3Click(Sender: TObject);

begin

edit3.Text:= floattostr(strtofloat(edit1.text)*strtofloat(edit2.text));

end;

Процедура обработки щелчка на кнопке "Разделить"

procedure TForm1.Button4Click(Sender: TObject);

begin

if edit2.text <> '0' then

edit3.Text := floattostr(strtofloat(edit1.text) / strtofloat(edit2.text))

else

edit3.text:= 'Ошибка. Деление на нуль';

end;

Пример 2.2 Вычисление функции

Вычислить значение функции , где

Описание переменных:

Имя

Тип

Семантика

x

a

y

вещественный

вещественный

вещественный

аргумент

параметр

значение функции

Вид формы с компонентами:

Процедура обработки щелчка на кнопке “Расчет”

procedure TForm1.Button1Click(Sender: TObject);