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

LabsDelphi1

.pdf
Скачиваний:
18
Добавлен:
31.03.2015
Размер:
492.92 Кб
Скачать

if i=3 then{для последнего эллипса заливка меняется }

Canvas.Brush.Style:=bsSolid;{на сплошную} Canvas.Ellipse (50, 80+(i-1)*100, 250, 120+(i-1)*100);

end;

{ниже – рисование треугольника}

Canvas.Polygon([Point(40,330),Point(100,330),Point(100,350)]);

{рисование верхней дуги}

Canvas.Arc(290,60,360,140,360,100,325,60);

{рисование нижней дуги}

Canvas.Arc(190,270,310,350,250,350,310,310); Canvas.Pen.Style:=psDash;{линии меняются на пунктирные}

{ниже – рисование вертикально стоящего прямоугольника}

Canvas.Rectangle(320,120,350,340); Canvas.Pen.Style:=psDashDot;{линии – штрих-пунктирные} Canvas.Brush.Style:=bsDiagCross;{перекрестная штриховка} Canvas.Rectangle(240,30,260,70);{малый прямоугольник} for i:=1 to 3 do{в цикле рисуются линии, стиль линии } begin { выбирается оператором case}

case i of

1:Canvas.Pen.Style:=psDash;

2:Canvas.Pen.Style:=psDashDot;

3:Canvas.Pen.Style:=psSolid; end;

Canvas.MoveTo(10, 100*i);{курсор – в начало линии} Canvas.LineTo(300,100*i);{рисование линии}

end;

end;

ПРИМЕР ОБРАБОТЧИКА, ФОРМИРУЮЩЕГО МАССИВЫ КООРДИНАТ ТОЧЕК СЕРИЙ ДЛЯ ВЫВОДА ГРАФИКОВ ФУНКЦИЙ С ПОМОЩЬЮ CHART

procedure TForm1.FormCreate(Sender: TObject);

{Обработчик выполняется при создании формы} Var n,i:integer;{n – число точек, i-номер точки}

x,y,h:real;{координаты точки и шаг приращения аргумента x}

31

begin n:=20; h:=2*pi/n;

x:=0;{начальное значение x}

Series1.Title:='sin';{изменение названий серий для легенды}

Series2.Title:='cos';

for i:=1 to n do {цикл по точкам} begin

y:=sin(x);

Series1.AddXY(x,y);{добавление точки к первой серии (графику)} y:=cos(x);

Series2.AddXY(x,y); {добавление точки ко второй серии (графику)} x:=x+h;{изменение x}

end; end;

Лабораторная работа №10. Обработка исключительных ситуаций

Цель работы: освоение приемов обработки исключительных ситуаций в Объектном Паскале.

Продолжительность работы: 2 часа

1. ПОДГОТОВКА К РАБОТЕ

Перед началом выполнения работы студент должен:

1.Ознакомиться с обработкой исключительных ситуаций по пособию [3], гл. 9.

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

1)исключительная ситуация класса EConvertError (ошибка преобразования данных) при считывании значений исходных данных из компонентEdit и преобразовании этих значений к числовым типам с использованием функций StrToInt, StrToFloat в приложении для задачи 1.3.4.N+1 (лабораторная работа №5);

2)исключительная ситуация класса EConvertError при считывании значения длины массива из компоненты Edit в приложении для задачи

32

3.4.N+1 (лабораторная работа №8); требуется заменить существующий

условный оператор на обработку исключения;

3)генерация исключительной ситуации (с помощью оператора raise), если в качестве длины массива введено неположительное число (задача 3.4.N+1, лабораторная работа №8); требуется заменить существующий оператор вывода сообщения об ошибке на генерацию исключения:

if n<=0 then raise Exception.Create('Введите положительное число');

4)генерация исключительной ситуации, если значения исходных данных выходят за допустимые границы (задача 1.3.4.N+1, лабораторная работа №5; допустимые границы определить из условия задачи);

5)(2-3) исключительные ситуации (деление на нуль, переполнение, извлечение корня из отрицательного числа и т. п.) при вычислении значений функций в лабораторной работе №9.

3.Подготовка проекта отчета по лабораторной работе. Отчет должен содержать для каждой исключительной ситуации:

1)описание ситуации;

2)фрагмент программного кода для ее обработки.

2.ЗАДАНИЕ И РЕКОМЕНДАЦИИ ПО ЕГО ВЫПОЛНЕНИЮ

1.Для каждого подпункта п. 2 подготовки к лабораторной работе измените программный код существующего приложения, добавив фрагмент с обработкой (генерацией) исключительной ситуации.

2.Отладьте измененные приложения.

3.Результаты зафиксируйте в отчете и покажите преподавателю.

Приложение 1. Пример проекта отчета по консольному приложению

Условие

Начальный вклад клиента в банке был равен A руб. В течение каждого

месяца рассматриваемого периода на счет добавляется B руб.; в конце каждого месяца на имеющийся вклад начисляется р %. Вывести величину вклада на

начало 1, 2, ... N месяца.

33

Состав данных

Имя

Смысл

Тип

Структура

 

 

Исходные данные

 

 

 

 

 

 

 

 

A

начальный вклад

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

простая переменная

B

деньги, поступающие

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

простая переменная

 

ежемесячно

 

 

 

 

 

 

 

 

 

р

начисляемые ежемесячно

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

простая переменная

 

проценты

 

 

 

 

 

 

 

 

 

N

количество месяцев

целый

простая переменная

 

 

Выходные данные

 

 

 

 

 

 

 

 

i

номер месяца

целый

простая переменная

V

Величина вклада на

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

простая переменная

 

начало i-го месяца

 

 

 

 

 

 

 

 

 

 

 

Форма ввода

 

 

 

 

 

 

 

 

 

Введите A, B, p, N

 

 

 

 

< A > < B > < p > < N >

 

 

 

 

 

 

 

 

Форма вывода

Номер месяца (i)

Вклад (V)

 

< i >

< V >

N раз

34

Блок-схема алгоритма

начало

Ввод A,B,p,N

V:=A

i:=1

i n

да

Вывод i,V

V:=V + B

V:=V*(1+p/100)

i:=i+1

конец

35

Программа на Паскале

Program primer2;

Var A,B,p,V:real; N,i:integer;

Begin

Writeln('Введите A,B,p,N'); Readln(A,B,p,N); V:=A; for i:=1 to N do

begin writeln(i:7, V); V:=V+B;

V:=V*(1+p/100); end;

Readln;

End.

Тесты

Тест 1. Входные данные: A=100; B=10; p=0; N=4.

Выходные данные:

i

V

1

100

2

110

 

 

3

120

 

 

4

130

 

 

Тест 2. Входные данные: A=100; B=10; p=1; N=3.

Ниже в фигурных скобках приведено значение V, полученное после вы-

полнения оператора тела цикла для последовательных значений i. Эти данные используются для проверки правильности программы с помощью трассировки.

i=1

writeln(i:7, V); {V=100} V:=V+B; {V=110} V:=V*(1+p/100); {V=111,1}

i=2

writeln(i:7, V); {V=111,1} V:=V+B; {V=121,1} V:=V*(1+p/100); {V=122,311}

36

i=3

writeln(i:7, V); {V=122,311} V:=V+B; {V=132,311} V:=V*(1+p/100); {V=133,63411}

Выходные данные:

i

V

1

100

 

 

2

111,1

3

122,311

 

 

Приложение 2. Пример проекта отчета по оконному приложению

Условие

А—начальная стоимость оборудования. В первый год эксплуатации стоимость оборудования снижается на В руб., а в каждый следующий год снижение стоимости уменьшается на р % (относительно предыдущего года). Определить, через сколько лет стоимость оборудования станет меньше А/2.

Рассматривать срок не более N лет.

Состав данных

Имя

Смысл

Тип

Структура

 

Исходные данные

 

 

 

 

 

A

начальная стоимость

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

простая переменная

 

оборудовани

 

 

 

 

 

 

B

начальное снижение стоимости

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

простая переменная

р

процентное уменьшение

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

простая переменная

 

снижения стоимости

 

 

 

 

 

 

N

максимальное число лет

целый

простая переменная

 

Выходные данные

 

 

 

 

 

i

искомый номер года

целый

простая переменная

 

Промежуточные переменные

 

 

 

 

 

At

текущая стоимость оборудования

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

простая переменная

Bt

текущее ежегодное снижение

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

простая переменная

 

стоимости

 

 

 

 

 

 

 

 

37

 

Блок-схема алгоритма

начало

Ввод A,B,p,N

At:=A; Bt:=B

i:=1

At≥A/2& i N

да

At:=At - Bt

Bt:=Bt-Bt*p/100

i:=i+1

да

At<A/2

i:=i -1

Вывод

'Срок истек'

Вывод i

конец

38

Эскиз основной формы приложения

 

 

 

 

 

 

 

 

 

 

 

Edit1

 

 

 

 

 

Начальная стоимость оборудования (A)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Начальное снижение стоимости (В)

 

 

 

Edit2

 

 

 

 

 

Уменьшение снижения, % (p)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Edit3

 

Label

 

 

 

 

 

 

 

 

 

 

Максимальное число лет (N)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Edit4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Через сколько лет стоимость

 

 

 

 

 

 

 

 

 

 

уменьшится в 2 раза

 

 

 

Edit5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Вычисление Выход

Button1

Button2

Программный код основного обработчика

Код приведен в лабораторной работе №5.

Тесты

Тест 1. Входные данные: A=100; B=20; p=1; N=5. При трассировке тела цикла получим:

i=1

At:=At-Bt; {At=80} Bt:=Bt-Bt*p/100; {Bt=19,8}

i=2

At:=At-Bt; {At= 60,2} Bt:=Bt-Bt*p/100; {Bt= 19,602}

i=3

At:=At-Bt; {At= 40,598 – меньше A/2!} Bt:=Bt-Bt*p/100; {Bt= 19,40598}

Выходные данные: i=3.

Тест 2. Входные данные: A=100; B=20; p=1; N=2. Результат – фраза: "За 2 лет снижения нет".

39

БИБЛИОГРАФИЧЕСКИЙ СПИСОК

1.Зубов В.С., Батасова В.С. Сборник задач по базовой компьютерной подготовке: учебное пособие по курсу «Информатика»/ В.С. Зубов, В.С. Батасова. — М.: Издательский дом МЭИ, 2007.— 123 с.

2.Батасова В.С. Начальный курс программирования на основе алгоритмического языка Паскаль. Учебное пособие по курсу «Высокоуровневые методы информатики и программирования». – М.: Издательство МЭИ, 2006.–116 с.

3.Маран М.М. Delphi. Начальный курс: учебное пособие / М.М. Маран – М. изд-во МЭИ, 2002. – 100 с.

СОДЕРЖАНИЕ

Введение..................................................................................................................

3

Лабораторная работа №1. Реализация простейших циклических алгоритмов в

 

консольном приложении среды Delphi..................................................................

4

Лабораторная работа №2. Решение задач обработки массивов в консольном

 

приложении среды Delphi.......................................................................................

8

Лабораторная работа №3. Проектирование алгоритмов с использованием

 

подпрограмм и их отладка в консольном приложении.......................................

10

Лабораторная работа №4. Решение задач с параметрами-подпрограммами и

 

модулями в консольном приложении Delphi.......................................................

11

Лабораторная работа №5. Разработка простейших оконных приложений в

 

среде Delphi...........................................................................................................

12

Лабораторная работа №6. Создание оконных приложений обработки матриц в

среде Delphi...........................................................................................................

15

Лабораторная работа №7. Программирование открытия и сохранения файлов с

использованием стандартных диалоговых окон .................................................

19

Лабораторная работа №8. Разработка оконных приложений, использующих

 

автономные модули ..............................................................................................

22

Лабораторная работа №9. Разработка оконных приложений, осуществляющих

графический вывод ...............................................................................................

26

Лабораторная работа №10. Обработка исключительных ситуаций...................

32

Приложение 1.

Пример проекта отчета по консольному приложению.............

33

Приложение 2.

Пример проекта отчета по оконному приложению...................

37

БИБЛИОГРАФИЧЕСКИЙ СПИСОК ..................................................................

40

 

40

 

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]