Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Объектно-ориентированное программирование на языке Delphi



Объектно-ориентированное программирование на языке Delphi

Информатика – это область человеческой деятельности, связанная с процессами преобразования информации с помощью компьютеров и их взаимодействием со средой применения. Информатика появилась благодаря развитию компьютерной техники и немыслима без нее.

Одним из важнейших разделов информатики является программирование. Язык программирования – это формальный, искусственно созданный язык для написания и реализации алгоритма на компьютере.

Данное методическое пособие предназначено для изучения основ объектно-ориентированного языка программирования Delphi (ООП) без ориентации на структурную парадигму.

Среди главных причин, принесших заслуженную популярность объектно-ориентированного программирования, следует отметить следующие:

· почти полное разрешение проблемы кризиса в программном обеспечении, за счет уменьшения времени на разработку программного продукта и высокой технологии программирования;

· переход от существующих языков программирования к новым, прогрессивным информационным технологиям и сходство идей объектно-ориентированного программирования с идеями из других областей науки.

Методы ООП для решения технических задач нередко используются в повседневной жизни, поэтому, обучение языкам объектно-ориентированного программирования не вызывает особых трудностей.

Методическое пособие может быть рекомендовано для студентов, изучающих объектно-ориентированное программирование.


Оглавление

Алгоритмы и исполнители. 5

Основные понятия объектно-ориентированного программирования. 6

Проверочная работа №1. Алгоритмы и исполнители. Основные понятия ООП 8

Форма и размещение на ней простейших объектов. 10

Лабораторная работа №1. 12

Расположение объектов на форме. 17

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

Дополнительные возможности при работе с объектами Edit, Memo. Кнопка с изображением BitBtn. 19

Лабораторная работа №3. MainMenu - главное меню формы.. 20

Проверочная работа №2. Работа с компонентами. 21

Арифметические операции в ООП.. 22

Лабораторная работа № 4. 24

Лабораторная работа №5. Алгоритм решения математический задачи на языке. 25

Стандартные арифметические функции. 26

Лабораторная работа № 6. 27

Флажки (CheckBox) и переключатели (RadioButton). Условный оператор. 27

Лабораторная работа №7. 32

Проверочная работа №3. Условный оператор. 34

Оператор варианта. 39

Лабораторная работа №8. 40

Работа со строками в объектно-ориентированном программировании. Оператор цикла с параметрами. 41

Лабораторная работа №9. 44

Программирование циклических алгоритмов. Циклы «до» и «пока». 45

Лабораторная работа №10. 46

Проверочная работа №4. Строки. Циклы.. 49

Рассмотрение дополнительных компонентов для ввода/вывода строк. 52

Оператор присоединения (With) 54

Графические компоненты.. 55

Лабораторная работа №11. 57

Работа с таблицами. 59

Лабораторная работа №12. 60

Массивы.. 61

Лабораторная работа №13. 63

Проверочная работа №5. Массивы.. 64

Обработка событий мыши. Регулировка прозрачности формы.. 67

Процедуры и функции вызова диалоговых окон. 68

Лабораторная работа №14. 69

Работа с датой и временем. 70

Лабораторная работа №15. 74

Компоненты вкладки Samples. Обработка событий OnDownClick и OnUpClick 74

Лабораторная работа №16. 75

Компоненты вкладки Dialogs. 76

Лабораторная работа №17. 76

Контрольная работа. 78

Список рекомендуемой литературы.. 80


Алгоритмы и исполнители

Термин алгоритм происходит от имени узбекского ученого 9в. Аль-Хорезми, который в своем труде " Арифметический трактат", переведенном в 12в. с арабского на латынь, изложил правила арифметических действий над числами. Эти правила и называли алгоритмами. Таким образом, правила вычитания, сложения, умножения, построения геометрических фигур - все это алгоритмы.

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

Рассмотрим пример:

Дано: улица с движением, пешеходный переход.

Найти: переход на другую сторону улицы.

1) остановиться на тротуаре;

2) посмотреть налево;

3) если транспорта нет, то идти до середины дороги и остановиться, иначе ждать пока проедет транспорт, затем идти до середины дороги и остановиться;

4) посмотреть направо;

5) если транспорта нет, то идти до тротуара противоположной стороны улицы, иначе ждать пока проедет транспорт, затем идти до тротуара противоположной стороны улицы;

6) конец.

Свойства алгоритмов:

1. Дискретность (разбиение на последовательность отдельных шагов)

2. Понятность

3. Детерминированность или однозначность (не должно быть шагов, которые можно воспринять неоднозначно)

4. Результативность

5. Массовость

Способы записи алгоритмов:

1. словесный

Ø естественный язык (кулинарный рецепт)

Ø язык программирования

2. графический (блок-схемы)

Ни один алгоритм не может работать без исполнителя – человека, животного или машины который понимает команды и исполняет их формально, т.е. не задумываясь.

У каждого исполнителя есть своя система команд исполнителя (СКИ). Если по каким-либо причинам он не может выполнить команду, поступает сообщение «не могу». Если команда не входит в СКИ, поступает сообщение «не понимаю».

Основные понятия объектно-ориентированного программирования

Язык программирования – это искусственно созданный язык для записи алгоритма с помощью ЭВМ. Программа – алгоритм, записанный на языке программирования.

Языки программирования:

1. неструктурный (Basic)

2. структурный (Pascal);

3. логический (Prolog);

4. объектно-ориентированный (Delphi);

5. функциональный (Lisp («черный ящик»)).

Преимущество ООП в наглядном представлении программы с помощью объектов (кнопок, строк для ввода информации и др.). Каждый объект принадлежит определенному классу. Например, кнопка (Button1) принадлежит классу кнопок TButton. В класс входит сколь угодно много объектов, объединенных в одну группу согласно их свойствам и поведению в среде окружения, в которой они существуют и взаимодействуют.

TButton

         
Button1 Button2 Button3 ButtonN

Чаще всего объекты включают в свою программу путем визуального программирования, используя заготовки – компоненты.

Компонент класса TButton

Каждый объект обладает свойствами, событиями и методами.

Свойства характеризуют отличительные особенности компонента (Name (Имя), Caption (Заголовок) и др.).

События – сообщение, которое компонент принимает от приложения, если во время работы программы выполняется определенное действие (например, нажатие на кнопку).

Методы – программный код, обрабатывающий значения свойств.

Класс характеризуется:

· Наследованием – любой класс может быть порожден от другого класса. Порожденный класс автоматически наследует поля, методы и свойства своего родителя и может добавлять новые.

· Инкапсуляцией. Класс представляет собой единство трех сущностей – полей, методов и свойств. Объединение этих сущностей в единое целое и называется инкапсуляцией. Представляет собой сокрытие отдельных деталей внутреннего устройства классов от внешних по отношению к нему объектов или пользователей.

· Полиморфизмом – это свойство классов решать схожие по смыслу проблемы разными способами. Действия, выполняемые одноименными методами, могут отличаться в зависимости от того, какому из классов относится тот или иной метод.

Проверочная работа №1. Алгоритмы и исполнители. Основные понятия ООП

Вариант №1.

1. От имени какого ученого произошел термин алгоритм? _______________________________________________________

2. Перечислите свойства алгоритма

a. ______________________________

b. ______________________________

c. ______________________________

d. ______________________________

e. ______________________________

3. Дайте определение исполнителя

_____________________________________________________________________________________________________________________________________________________________________

4. Что мы понимаем под языком программирования? ______________________________________________________________________________________________________________

5. Приведите пример класса и объекта ему принадлежащего. _______________________________________________________

Вариант №2*.

1. Дайте определение алгоритма. ________________________________________________________________________________________________________________________________________________________________________

2. Перечислите способы записи алгоритма в виде схемы

____________________ ____________________
  ____________________ ____________________

3. Что такое СКИ? __________________________________________

4. Что такое программа? ________________________________________________________________________________________________________________

5. Чем обладает объект?

____________________ ____________________ ____________________

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

1. Запустите среду программирования Delphi

2. Перед вами открылся новый проект, состоящий из Формы (Form), на которую будете наносить объекты и окно Программного кода (Unit), куда будете записывать программу

Создание графического интерфейса объекта. Создать приложение, в котором после запуска на форме печатается некоторый текст, например, «Первый проект на языке Delphi».

Создадим заготовку проекта, для этого свойству Caption (заголовок) формы Form1 присвоим значение “Первый проект’. Для этого активизировать форму Form1 щелчком мыши (чтобы вокруг компонента появились черные квадратики – маркеры для изменения размера). В окне Object Inspector (Инспектор объектов) → Properties (Свойств объекта) выбрать свойство Сaption и присвоить ему значение «Первый проект» (написать в ячейке справа от Caption Первый проект).

Выведем на форму текстовое сообщение. Это можно сделать различными способами:

· С помощью элемента управления Label (Метка)

· С помощью элемента управления Edit (Одна строка)

· С помощью элемента управления Memo (Несколько строк)

Разместим на форме метку Label1 и присвоим свойству Сaption (Надпись) значение выводимого текстового сообщения

3. Выбрать на Панели инструментов класс управляющих элементов TLabel и разместить экземпляр метки Label1 на форме Form1

4. Активизировать метку Label1 щелчком мыши. В окне Object Inspector (Инспектор объектов)Properties (Свойства объекта) выбрать свойство Caption (заголовок) и присвоить ему значение ‘Первый проект на языке Delphi’.

Разместим на форме текстовое поле Edit1 и присвоим свойству Text значение выводимого сообщения (сделать самостоятельно)

Событийные процедуры. Любой объект можно связать с набором процедур, исполняемых при наступлении определенных событий, такие процедуры называют событийными процедурами

Двойной щелчок мышью по объекту вызывает окно Программного кода (Unit) с пустой заготовкой событийной процедуры (метода). Если осуществить двойной щелчок по метке Memo1, то появится заготовка событийной процедуры TForm1.Memo1Change (…); ( эта надпись появляется автоматически! )

procedure TForm1.Memo1Change(Sender: TObject);

begin

… end;

В теле процедуры (между служебными словами begin и end) должен быть записан метод, т.е. последовательность операторов, которые будут выполняться при наступлении событий (нажатии на Memo1)

5. Выбрать на Панели инструментов класс управляющих элементов TMemo и разместить экземпляр многострочного редактора Memo1 на форме Form1. В свойстве Lines удалить существующую надпись Memo1. (щелкнув по многострочному полю Memo1, кликнуть напротив свойства Lines и удалить там надпись Memo1).

6. Активизировать Memo1 двойным щелчком мыши, тем самым вызвать окно Программного кода с пустой процедурой TForm1.Memo1.Change (…); ( эта надпись появляется автоматически )

7. В теле процедуры записать

Memo1.Text: ='Второй проект на языке Delphi';

т.е. при запуске программы, щелкнув по Memo1, появится надпись «Второй проект на языке Delphi»

Использование кнопок. Обычно, при работе с событийными процедурами используют Кнопки (TButton). Логично, что при нажатии на кнопку с определенным именем происходит какое-либо действие. Теперь необходимо решить предыдущую задачу, но с помощью Кнопки. В дальнейшем большинство задач будет решаться при обработке события OnClick – двойной щелчок по кнопке.

8. Выбрать на Панели инструментов класс управляющих элементов Button и разместить экземпляр кнопки Button1 на форме Form1

9. Выбрать на Панели инструментов класс управляющих элементов TLabel и разместить экземпляр метки Label2 на форме Form1

10. Активизировать кнопку Button1. В окне Свойств объекта выбрать свойство Caption и присвоить ему значение Моя кнопка (щелкнув по кнопке Button1, написать в колонке Properties Моя Кнопка в ячейке справа от Caption).

11. Активизировать Button1 двойным щелчком мыши, тем самым вызвать окно Программного кода с пустой процедурой TForm1.Button1Click(Sender: TObject); ( эта надпись появляется автоматически )

12. В теле процедуры записать Label2.Caption: ='Третий проект на языке Delphi';

т.е. при запуске программы, щелкнув по Моей кнопке, появится надпись на метке Label2 «Третий проект на языке Delphi»

Выход из программы легко осуществлять записывая в событийной процедуре оператор Close;

Установка цвета формы и параметров шрифта. Сделаем внешний вид более привлекательным и для этого изменим свойства объектов, определяющих их внешний вид.

13. Активизировать форму Form1. В окне свойства объекта выбрать свойство Сolor (цвет фона) и двойным щелчком открыть диалоговое окно с цветовой палитрой. Выбрать цвет, например желтый.

14. Активизировать метку Label1. В окне свойства объекта установить значения Color – синий, FontArial, жирный, 26 размер, травяной цвет символов.

15. Поэкспериментировать с объектами Memo1, Edit1, Label2

Для того, чтобы менять параметры шрифта с помощью кнопки при запуске программы необходимо в событийной процедуре указать, например Label2.Font.Size: =30; Label2.Font.Сolor: =clWhite; Т.е. при нажатии на кнопку размер шрифта метки 2 станет равным 30, а цвет - белым.

Для изменения начертания шрифта пишем

· Label2.Font.Style: =fsbold; {полужирный},

· Label2.Font.Style: =fsitalic; {курсив},

· Label2.Font.Style: =fsunderline; {полужирный}.

Если необходимо поменять шрифт пишем Label2.Font.Name: =’Arial’; {Arial} или Label2.Font.Name: =’Times New Roman’; {Times New Roman}

Задание для самостоятельной работы:

1. Создать проект «Вывод сообщений», в котором на форму выводится текстовое сообщение «Первое задание выполнено! » с помощью метки, одной строки и многострочного редактора, а выход из программы осуществляется щелчком по кнопке Выход. Придумать графический интерфейс программе.

2. Создать проект «Вывод сообщений в строку», в котором два различных варианта текста выводятся в строку Edit1 по щелчку по двум кнопкам. Предусмотреть возможность выхода из программы по третьей кнопке.

3. Создать проект «Печать на форме», в котором в нескольких метках при нажатии на кнопки тексты будут со следующими параметрами:

· «Times New Roman, 18, курсив, красный»

· «Courier New, 40, полужирный, зеленый»

· «Arial, 22, подчеркнутый, синий»

· «Webdings, 12, подчеркнутый курсив, желтый»

· «Monotype Corsiva, 32, полужирный»

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

Расположение управляющих элементов на форме. Расположение на форме и размеры управляющих элементов можно легко изменять с помощью мыши. Для этого необходимо активизировать объект щелчком мыши (он будет выделен восемью квадратиками - маркерами) и перетащить его на новое место или изменить размер элемента.

Точное месторасположение и размеры выделенных элементов управления отображаются двумя парами чисел: Left, Top, Width и Height.

1. Активизировать метку Label1. В окне свойства объекта последовательно присвоить свойствам Left, Top, Width и Height значения 30, 0, 100, 100.

2. Активизировать метку Label2. В окне свойства объекта последовательно присвоить свойствам Left, Top, Width и Height значения 70, 0, 450, 100

3. Активизировать метку Label3. В окне свойства объекта последовательно присвоить свойствам Left, Top, Width и Height значения 0, 330, 100, 30.

Задачи для самостоятельного выполнения:

1. Создать проект «Перемещение кнопки по форме», в котором, например, в центре, располагаются кнопки и по щелчку перемещаются в заданное место на форме, например по углам формы

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

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

Решим простейший пример: найти сумму трех чисел.

1. Описываем после служебного слова VAR несколько переменных целого типа для удобства решения: Var a, b, c, s: integer;

2. На форму заводим 3 метки: Label1, Label2, Label3. У каждой из них в свойстве Caption написать соответственно а=, в=, с=.

3. Наносим однострочные элементы управления Edit1, Edit2, Edit3. В них будем вводить числа. Для этого в свойстве Text нужно удалить надписи.

4. Заводим кнопку, которую называем Cумма

5. Наносим элемент управления Memo1 и удаляем все надписи в многострочном редакторе. Для этого в окне Свойства объекта выбираем свойство Lines и удаляем все надписи в нем.

Примерно ваша форма должна выглядеть так:

6. Активируем двойным щелчком мыши кнопку. Появляется процедура TForm1.Button1Click(Sender: TObject);

7. В теле процедуры присваиваем заведенным переменным значения строк следующим образом a: =StrToInt(Edit1.text); (аналогично для b и c)

8. Вычисляем сумму s: =a+b+c;

9. Выводим результат в Memo1. Для этого записываем Memo1.Text: =IntToStr(s);

Продумать свое графическое оформление этой задачи.

Задания для самостоятельной работы:

1. Вычислить произведение четырех чисел. Графическое оформление задачи самостоятельное.

2. Решить пример a=b+c/m*k. Графическое оформление задачи самостоятельное.

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

Для работы с арифметическими функциями необходимо выполнять простое правило:

1. Для вывода значения функции х2 нужно описать две переменные x и y целого типа.

2. Ввести х с клавиатуры. Например, x: =StrToInt(Edit1.Text);

3. В программе y: =sqr(x);

4. Вывести значение у. Например, Memo1.Text: =IntToStr(y);

Задания для самостоятельной работы:

1.

2.

3. Дано число. Вывести на экран его целую и дробную части.

4. Даны числа a, b, c. Возвести в третью степень a, в квадрат произведения b на с и найти модуль суммы этих чисел.

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

Флажки. При активизации двойным щелчком мыши CheckBox1 появится процедура TForm1.CheckBox1Click(Sender: TObject);

Задача: При установке флажка текст в Метке1 должен становиться жирным.

Procedure TForm1.CheckBox1Click(Sender: TObject);

begin

if checkbox1.Checked=true

then Label1.font.Style: =font.style+[fsbold]

else Label1.font.Style: =font.style-[fsbold]

end;

То есть, если (if) флажок установлен, (then) текст в Метке1 должен становиться жирным, (else) а при повторном нажатии на флажок – обычным.

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

< Условие> < Оператор>
CheckBox1.checked Memo1.Font.Style: =Memo1.Font.Style+[fsBold]
  Memo1.Font.Style: =Memo1.Font.Style-[fsBold]

Вставив условия и операторы в шаблон получим:

procedure TForm1.CheckBox1Click(Sender: TObject);

begin

if CheckBox1.checked then

Memo1.Font.Style: =Memo1.Font.Style+[fsBold]

else

Memo1.Font.Style: =Memo1.Font.Style-[fsBold]

end;

Переключатели. Задача: При установке переключателей текст в Метке1 должен становиться желтым либо красным.

procedure TForm1.RadioButton1Click(Sender: TObject);

begin

if RadioButton1.Checked=true then Label1.Font.Color: =clyellow

end;

procedure TForm1.RadioButton2Click(Sender: TObject);

begin

if RadioButton2.Checked=true then Label1.font.Color: =clred

end;

Задания для самостоятельной работы:

1. Создать простейший текстовый процессор, содержащий переключатели цвета шрифта, флажки для определения стиля.

2. Вычислить наибольшее (max) из двух введенных чисел а и b.

3. Вычислить наименьшее (min) из трех чисел a, b, c.

4. Даны числа x, y, z. Найти количество чисел больших нуля.

5. Даны числа x, y, z. Найти сумму чисел меньших нуля и произведение чисел больших нуля.

6. Даны числа a, b, c. Вычислить модуль чисел меньших нуля, квадрат чисел не равных нулю и корень из чисел больших нуля.

7. Найти значение выражения z=3x-4, 0< x< =1и z=|x-x2|, 1< x< =10

8. s=max(x, y), x< 0 s=min(x, y), x> =0

9. Известно, что из четырех чисел а1, а2, а3, а4 одно отлично от трех других, равных между собой. Вывести это число.

10. Даны два действительных числа x и y, не равные друг другу. Меньшее из этих чисел заменить половиной их суммы.

Придумать и решить несколько задач по данной теме.

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

Задача: Написать программу, которая по введенному числу 1..3 выводит его название.

Опишем переменную Var a: integer;

Для события по щелчку кнопки в теле процедуры напишем:

Begin

a: =(Edit1.text); // ввод числа

case a of

1: Memo1.text: =IntToStr(‘один’);

2: Memo1.text: =IntToStr(‘два’);

3: Memo1.text: =IntToStr(‘три’);

else Memo1.text: =IntToStr(‘Введите число 1, 2 или 3’);

end;

End;

Задания для самостоятельной работы:

1. Составить программу, которая по заданному числу (1-12) выводит название соответствующего месяца.

2. Написать программу, которая по введенному номеру времени года выдавала соответствующие этому времени года месяцы и число дней в каждом месяце.

3. Составить программу, которая для любого натурального числа 1-1000 печатает количество цифр в записи этого числа.

4. Для целого числа k от 1 до 99 напечатать фразу «я прочел k книг», согласовав окончание слова «книга» с числом k.

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

Рассмотрим алгоритм решения задачи, в которой нужно подсчитать количество вхождений символа «а» в строку. Используем компоненты классов TEdit и TMemo для ввода строки и вывода результата.

Var s: string;

i, k: integer;

Procedure TForm1.Button1Click(Sender: TObject);

Begin

s: =edit1.text; //ввод строки

For i: =1 to length(s) do //идем по строке

If s[i]=’a’ then k: =k+1; {если i-ый символ а, тогда увеличивай счетчик k}

Memo1.text: =IntToStr(k) //вывод результата

End;

Пусть форма будет выглядеть следующим образом:

Задания для самостоятельной работы:

1. Дана строка s: Найти количество вхождений букв a, c, d в строку.

2. Найти количество цифр в строке.

3. Сцепить несколько строк в одну.

4. Из данной строки выбрать цифры и сформировать из них новую строку.

5. Найти количество слов, начинающихся на букву с.

6. Подсчитать количество слов в строке.

7. Определить начинается и заканчивается ли слово одной буквой.

8. Удалить каждую четную букву в строке.

9. Проверить одинаковое ли число открытых и закрытых скобок в строке.

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

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

Задача: Вывести 5 одинаковых надписей: «Программа цикла»

Для вывода повторяющегося действия нам понадобиться описать переменную i целого типа, обработать события OnClick для кнопки Button1. В теле процедуры необходимо описать нижеследующий метод:

procedure TForm1.Button1Click(Sender: TObject);

begin

for i: =1 to 5 do

Memo1.Lines.Add('Программа цикла')

end;

Рассмотрим пример решения задачи: найти сумму ряда s=1+1/2+1/3+…+1/k.

Для задачи наиболее оптимальным алгоритмом решения будет цикл. Для того чтобы выделить повторяющие части запишем ряд следующим образом: s=1/1+1/2+1/3+…+1/k.

Заметим, что числители постоянен и равен 1. Знаменатели постоянно увеличиваются на 1 в интервале от 1 до k. Таким образом, общий вид элемента ряда = 1/i, где i – изменяющийся знаменатель. Следовательно, запишем метод решения задачи:

Var k, i: integer; s: real;

Begin

k: =StrToInt(Edit1.Text); s: =0;

For i: =1 to k do s: =s+1/i; {i пробегает все значения знаменателя от 1 до k (1, 2, 3, …, k) изначально s=0, при k=1 s=0+1/1, s становится равным 1; при k=2 s=1+1/2, s становится равным 1, 5 и т.д.}

Memo1.Text: =FloatToStr(s);

End;

Задания для самостоятельной работы:

1. Вывести таблицу умножения на любое число, введенное с клавиатуры.

2. Вывести таблицу значений функции y=sin(x) в интервале 0..1

3. Вывести 4 надписи: «На окне сидело n кошек», 1£ n£ 4.

4. В интервале [0, 20] подсчитать количество четных чисел и чисел, которые делятся на 3.

5. Вычислить сумму натурального ряда чисел от 1 до n.

6. Вычислить сумму чисел s=1/(p+2)+2(p+2)+3/(p+2)+…+p/(p+2).

7. Вычислить произведение чисел кратных 5 ряда от 1 до n.

8*. Вычислить сумму чисел s=(1+3+5+…+2*n-1)3-(2+4+6+…+2*n)2.

9*. Составить программу для проверки утверждения: «Результатами вычислений по формуле х2+х+17 при 0≤ х≤ 15 являются простые числа». Все результаты вывести на экран (простое число – число которое делится только на себя и на единицу).

10*. Покупатель должен заплатить в кассу s рублей. У него имеются 1, 2, 5, 10, 50, 100, 500, 1000-рублевые купюры. Сколько купюр разного достоинства отдаст покупатель, если он начнет платить с самых крупных? (использовать процедуру Continue).

11*. Написать программу, которая запрашивает исходные данные и производит над ними выбранное пользователем действие. Выбор действий осуществляется с помощью меню. Исходные данные – числа a и b. Меню действий:

1. – сложить

2. – умножить

3. – вычесть

4. – разделить

5. – выход

Результат выводить после каждого действия

Графические компоненты

TImage – изображение

Данный компонент служит для размещения на форме одного из трех поддерживаемых Delphi типов изображений: растрового рисунка (*.bmp), значка (*.ico) или метафайла (*.wmf, *.emf). С помощью свойства Canvas программа может отредактировать растровое изображение (но не метафайл или значок! )

Свойства компонента:

Свойство Описание
AutoSize Разрешает/запрещает изменять размеры компонента так, чтобы в них полностью загрузилось изображение
Canvas Для прорисовки изображения
Center Указывает, надо ли центрировать изображение в границах компонента
Picture Контейнер изображения
Stretch Разрешает/запрещает изменять размеры изображения так, чтобы оно целиком заполнило клиентскую область компонента
Transparent Разрешает/запрещает накладывать собственный фон изображения на фон компонента

TShape – стандартная фигура

Компонент рисует одну из простейших геометрических фигур:

stCircle – окружность

stRounrSaustre – квадрат с закругленными сторонами

stSquare – квадрат

stEllipse – эллипс

stRectangle – прямоугольник

stRoundRect – прямоугольник с закругленными сторонами

Фигура полностью занимает все пространство компонента. Помимо стандартных графических инструментов Brush и Pen, в компоненте определено свойство Shape, задающий вид фигуры. Изменение этого свойства приводит к немедленной перерисовке изображения

TPaintBox – окно для рисования

Для создания изображения в компоненте класса TPaintBox используется свойство канва (Canvas), графические инструменты – в свойствах Font, Pen, Brush. Рисование осуществляется в обработчике события OnPaint.

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

Создадим несложную программу просмотра изображений:

1. Поместите на форму панель TPanel, очистите ее свойство Caption.

2. Разместите на панели кнопку TButton с надписью Загрузить.

3. На любое свободное место формы (над панелью) поместите компонент TImage и установите в его свойство Align значение alClient.

4. На любое место поместите компонент TOpenPictureDialog (вкладка Dialogs) – с его помощью пользователь программы может разыскать нужный файл с изображением.

5. Для кнопки напишите обработчик события OnClick:

Begin

If OpenPictureDialog1.Execute then

Begin

Image1.Picture.LoadFormFile(OpenPictureDialog1.FileName);

Image1.Stretch: = True {масштабирует изображение, чтобы оно занимало всю рабочую область}

End;

End;

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

procedure TForm1.PaintBox1Paint (Sender: TObject);

var x, y: integer;

begin

with paintbox1.Canvas do

begin

brush.Color: =clred; ellipse(0, 0, 620, 420); font.Name: ='arial';

font.Size: =height div 5; font.Style: =[fsbold, fsitalic];

font.Color: =clwhite;

x: =(620 - textwidth('Delphi')) div 2; y: =(420 - textheight('D')) div 2;

textOut(x, y, 'Delphi')

end; end;

Задания для самостоятельной работы:

1. По введенным координатам точки А(a1, a2) вывести координатную четверть с ПДСК.

2. Нарисовать домики пейзаж около него.

3. По введенному числу лепестков вывести значение гадания по ромашке «любит» или «не любит».

Работа с таблицами

TStringGrid – текстовая таблица

Компонент TScrollBar предназначен для создания таблиц, в ячейках которых располагаются произвольные текстовые строки. Таблица делится на две части – фиксированную и рабочую. Фиксированная часть служит для показа заголовков колонок и рядов, а так же для ручного управления их размерами. Обычно фиксированная часть занимает левую колонку и верхний ряд таблицы, однако с помощью свойств FixedCols и FixedRows можно задать другое количество фиксированных колонок и рядов.

Рабочая часть – это остальная часть таблицы. Она может содержать произвольное количество колонок и рядов, более того, эти величины могут изменяться программно. Если рабочая часть таблицы не помещается целиком на экране, то автоматически появляется полоса прокрутки.

Свойства компонента:

Свойство Описание
BorderStyle Определяет рамку компонента: bsNone – нет рамки, bsSingle – рамка толщиной 1 пиксел
Cells[col, row] Определяет содержимое ячейки с табличными координатами (col, row)
Col Содержит номер колонки с ячейкой, имеющей фокус ввода
ColCount Содержит количество колонок таблицы
ColWidths Содержит ширину колонки с индексом Index
EditorMode Разрешает/запрещает редактирование ячеек. Игнорируется, если свойство Options включает значение goAlwayseShowEditor или не включает значение goEditing
FixedColor Определяет цвет фиксированной зоны
FixedCols Определяет количество колонок фиксированной зоны
FixedRows Определяет количество рядов фиксированной зоны
GridHeight Содержит значение высоты таблицы
GridLineWidth Определяет ширину линий, расчерчивающих таблицу
GridWidth Содержит значение ширины таблицы
Row Содержит номер ряда ячейки, имеющий фокус ввода
RowCount Содержит количество рядов таблицы
RowHeights Содержит значение высоты ряда с индексом Index
Rows Содержит все текстовые строки ряда с индексом Index
ScrollBars Определяет полосы прокрутки: ssNone – нет полос; ssHorizontal – в таблицу вставляется горизонтальная полоса; ssVertical – вставляется вертикальная полоса; ssBoth – вставляются обе полосы.

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

Для обращения к ячейке [0, 0] нужно использовать свойство Cells:

StringGrid1.Cells[0, 0]: =IntToStr(5)

1. Проиллюстрируйте возможности рассмотренного компонента, составив таблицу следующего вида:

  Дисциплина ФИО педагога
1. Математика Иванов И.И.
2. Русский язык Петров П.П.
3.

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

3. Составить таблицу, выводящую расписание занятий в школе.

Массивы

Массив – упорядоченный набор однотипных значений – компонент массива. Тип компонент называется базовым типом массива.

В Delphi массив рассматривается как переменная структурированного типа. Массиву присваивается имя, посредством которого можно ссылаться на него, как на единое целое, так и на любую из его компонент.

Описание массивов

VAR < имя переменной>: ARRAY [< type1, type2, …> ] OF < type>;

[< type1, type2, …> ] типы индексов

< type> - базовый тип

Количество типов индексов определяет размерность массива. Тип индексов может быть любым, кроме Real. Базовым типом может быть любой тип данных.

Примеры описания массивов

Var a: array[1..10] of integer; - последовательность целых чисел

Var t: array[1..2, 1..2] of real; - таблица 2х2.

Var a1: array [‘A’..’Z’] of word;

Обращение к элементам массива

a[1] – первый элемент из массива a.

t[1, 2] – элемент из первой строки второго столбца.

Индексы можно задавать либо конкретными значениями, либо выражениями.

i: =1; a[i] - первый элемент из массива a; a[i+1] – второй элемент массива а.

В динамических массивах не указывается размерность в описании:

Например, var a: array of integer;

Размерность устанавливается в теле программы: SetLength(a, 10); - длинна массива а – 10 элементов.

По массиву проход осуществляется от первого до последнего элемента:

for i: = Low(a) to High(a) do где i: integer;

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

Задания для самостоятельной работы:

1. Заполнить линейный массив произвольными числами и вывести его на экран.

2. Заполнить линейный массив числами, введенными с клавиатуры, вывести этот массив, увеличить все элементы на 5 и снова вывести получившийся массив на экран.

3. В линейном массиве найти элементы массива равные 10 и вывести их индексы.


Поделиться:



Популярное:

Последнее изменение этой страницы: 2016-07-14; Просмотров: 1037; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.235 с.)
Главная | Случайная страница | Обратная связь