Задания по практическим работам на языке делфи. Обработка двумерных массивов(матрицы)

Практическая работа № 1

Компоненты Delphi

Цель: познакомиться с основными событиями, методами и свойствами стандартных компонентов Delphi ; приобрести навыки написания обработчиков событий для компонентов.

ЗАДАНИЕ И ВЫПОЛНЕНИЕ РАБОТЫ:

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

    Расположите на форме компоненты, приведённые на рисунке.

2.1 Панель Panel (вкладка Standard ).

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

компоненты вдоль одной из сторон окна независимо от изменения размеров этого окна. Компонент имеет развитые средства создания различных эффектов трёхмерности за счёт использующихся в нём двух кромок - внешней и внутренней (свойства BevelOuter и Bevellnner).

      Объект Shape (вкладка Additional).

С помощью компонента Shape возможно нарисовать одну из простейших геометрических фигур: stRectangle - прямоугольник; stSquare - квадрат;

stRoundRect - скруглённый прямоугольник; stRoundScuare - скруглённый квадрат; stEllipse - эллипс; stCircle - круг. Вид геометрической фигуры определяется свойством Shape. Цвет объекта задаётся свойством Brush.Color.

      Две кнопки Button (вкладка Standard).

Кнопки TButton широко используются для управления программами. Для этого, как правило, используется обработчик события onClick данного компонента.

      Таймер Timer (вкладка System).

      наступления события onlimer. Таймер включается при установке значения Тrue в его свойство Enabled. Раз включённый таймер всё время будет генерировать события onTimer, пока его свойство Enabled не примет значение False.

      Комбинированный список ComboBox (вкладка Standard ).

      Существуют 5 модификаций компонента, определяемые его свойством Style: csSimple, csDropDown, csDropDownList, csOwnerDrawFixed и csOwnerDrawVariable. В первом случае список всегда раскрыт, в остальных он раскрывается после нажатия кнопки справа от редактора. В модификации csDropDownList редактор работает в режиме отображения выбора и его нельзя использовать для ввода новой строки (в других модификациях это возможно). Свойство DropDownCount определяет количество элементов списка, появление которых ещё не приводит к необходимости прокрутки списка. Свойство DroppedDown определяет, раскрыт ли в данный момент список, что позволяет программно управлять состоянием списка. Событие onDropDown происходит при изменении состояния списка.

      Редактор Edit (вкладка Standard).

      Контейнер для размещения зависимых переключателей RadioGroup (вкладка Standard ).

    переключателей. Свойство Itemlndex содержит индекс выбранного переключателя. Индекс первого элемента: 0.

    1. Три метки Label (вкладка Standard ).

    Создаваемый вами проект должен реализовывать следующие функции:

    1. Автоматическое перемещение объекта Shape в границах объекта-контейнера Panel с отражением от его сторон.

      Выбор формы объекта Shape из списка компонента ComboBox.

      Указание скорости перемещения объекта Shape в компоненте Edit

      Выбор цвета компонента Shape с помощью компонента RadioGroup.

      Отображение текущих координат объекта Shape с помощью двух меток Label.

    Задание начальных свойств для компонента Shape :

    1. Установите для компонента Shape ширину=45 и высоту=35.

    ComboBox :

    1. Установите необходимые надписи на форме, кнопках, панели и метках. (С помощью первой кнопки движение объекта Shape будет начинаться, а с помощью второй - прекращаться).

      С помощью свойства Items компонента ComboBox определите перечень форм (но русском языке!), которые может принимать объект Shape. (Последовательность форм на английском языке: stRectangle, stSquare, stRoundRect, stRoundSquare, stEllipse, stCircle).

      Выберите подходящее событие для компонента ComboBox и напишите его обработчик, с помощью которого будет меняться форма объекта Shape. Это можно сделать как минимум двумя способам:

      1. Первый способ: Для этого достаточно выполнить следующее присвоение:

    Shapel.Shape:=TShapeType(HOMep выбранного элемента),

    где TShapeType - уже существующий в Delphi массив, следующего вида:

    TShapeType = (stRectangle, stSquare, stRoundRect, stRoundSquare, stEllipse, stCircle);

        Второй способ : Использовать оператор выбора CASE для проверки того, какая

    строка из ComboBox была выбрана, и в зависимости от этого устанавливать свойство Shape компонента Shape, например:

  1. Case ComboBoxl.Itemlndex of

    1: Shape1. Shape:= stRectangle; {it m.d.)

      Запустите проект на выполнение и проверьте, меняется ли форма объекта Shape при выборе соответствующей строки из ComboBox. Если да, то можете переходить к следующему шагу.

    Задание начальных свойств и обработчиков для компонента RadioGroup :

    1. Задайте подходящий заголовок для компонента.

      Определите, с помощью свойства Items укажите цвета, который сможет принимать объект Shape.

      Задайте количество столбцов для расположения списка.

      Напишите обработчик события onClick для компонента RadioGroup, в котором бы изменялся цвет объекта Shape на тот, который выбрал пользователь (см. описание объекта Shape- и RadioGroup для того чтобы определить какими свойствами компонента необходимо воспользоваться). При написании обработчика рекомендуется использовать оператор выбора CASE.

      Запустите проект на выполнение и проверьте, меняется ли цвет объекта Shape при выборе соответствующей строки из RadioGroup. Если да, то можете переходить к следующему шагу.

    Задание начальных свойств и обработчиков для компонента Timer :

    1. Установите свойство Enabled в состояние False, а свойство Interval = 10.

      Перейдите в окно инспектора кода, найдите вверху текста строку:

  1. Добавьте после этой строки описание двух переменных DX и DY типа integer. Это будут глобальные переменные, хранящие шаг, с которым объект Shape будет перемещаться внутри контейнера Panel.

      Внесите в обработчик события компонента Timer следующий код:

    with Shapel do begin

    if (Leftor (Left+Width=Panell. Width) then dx:=-dx;

  1. if (Topor (Top+Height=Panell.Height) then dy:=-dy;

  2. end :

    Самостоятельно разберитесь в назначении этих команд.

    Задание начальных свойств н обработчиков для формы Form :

    1. Задайте для формы подходящие размеры.

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

    Задание начальных свойств и обработчиков для кнопок Button :

    1. Введите необходимые надписи и тип шрифта для кнопок.

      При щелчке по первой кнопке компонент Timer должен активизироваться, при щелчке на второй - деактивироваться. Создайте соответствующие обработчики событий для кнопок, (см. описание компонента Timer).

      Запустите проект на выполнение и попробуйте запустить и остановить движение объекта Shape с помощью кнопок. Если это удалось, то можете переходить к следующему шагу.

    Задание начальных свойств и обработчиков для компонента Edit :

    1. Удалите текст из компонента, чтобы при запуске программы строка с именем объекта не отображалась на экране.

      Создайте обработчик события onKeyPress для этого компонента. В обработчике должны выполняться следующие действия: если нажата клавиша Enter (код клавиши: #13), то присвоить переменным DX и DY значение, введённое пользователем в компонент Edit. (Рекомендуется вводить значения в диапазоне от 1 до 20).

      Запустите проект на выполнение и попробуйте изменить скорость перемещения объекта Shape с помощью значений, вводимых в поле компонента Edit. Если это удалось, то можете переходить к следующему шагу.

    Отображение координат объекта Shape с помощью меток Label :

    1. В обработчик события onTimer компонента Timer добавьте код, позволяющий отображать текущие координаты объекта Shape.

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

    Дополнительное задание:

    1. Объект Shape должен автоматически менять цвет при «ударе» о границу панели.

      0бъект Shape пропадает и появляется на экране по желанию пользователя.

      В контейнере перемещаются 2 объекта Shape.

  1. Контрольные вопросы:

    Расскажите о компонентах Delphi, использованных вами при выполнении данной практической работы.

    В чём отличие визуальных от невизуальных компонентов? Использовались ли невизуальные компоненты при выполнении данной практической работы (если да, то какие)?

    Как определить, какую строку по счёту выбрал пользователь из компонента ComboBox? А как определить содержимое этой строки?

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

    В чём отличие локальных переменных от глобальных?

    Что нужно сделать, чтобы строки в компоненте RadioGroup отображались на экране в 3 столбика?

    С помощью какого свойство можно программно изменить цвет компонента TShape? Какие значения можно передавать этому свойству?

    Расскажите, по какому принципу осуществляется перемещение объекта TShape по экрану?

    Какое свойство компонента ComboBox и как нужно изменить, чтобы запретить пользователю вводить свои варианты?

    Для чего используются следующие свойства компонентов: Enabled, Visible?

Практикум содержит начальные сведения о работе в Windows, основы алгоритмизации, элементы объектно-ориентированного программирования (ООП) в среде Delphi 7. Материал лабораторного практикума представлен в виде подробного описания приемов программирования в интегрированной среде Delphi 7. Описание сопровождается иллюстрациями, что позволяет получить самые необходимые сведения и навыки для разработки простых Windows-приложений.
Для студентов специальности 080801.65 «Прикладная информатика (в экономике)».

Интерфейс пользователя в Windows.
Слово Windows переводится с английского языка как «окна». Вся информация в Windows представлена в виде окон. В Windows различают два вида окон: окна документов и окна программ (приложений). Фоновая часть экрана называется рабочим столом. На рабочем столе располагаются значки (ярлыки), соответствующие различным прикладным программам (приложениям) или документам, панель задач, на которой расположена кнопка Пуск и кнопки запущенных приложений, а также окна, в которых выполняются приложения. Любой значок или графический элемент на экране можно активизировать, если установить на него указатель мыши и в тот момент, когда указатель мыши расположен над этим элементом, сделать одинарный или двойной щелчок левой или правой кнопкой мыши.

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

СОДЕРЖАНИЕ
1. ОСНОВНЫЕ СВЕДЕНИЯ ДЛЯ РАБОТЫ В WINDOWS
1.1. Общие сведения о файлах
1.2. Свойства и этапы построения алгоритма
1.3. Структуры алгоритмов
Вопросы для коллоквиума
2. ОСНОВЫ ВИЗУАЛЬНОГО ПРОГРАММИРОВАНИЯ
2.1. Начало работы в Delphi
2.2. Общие свойства визуальных компонентов
2.3. Свойства простых объектов
3. ПРОГРАММИРОВАНИЕ В СРЕДЕ DELPHI
3.1. Операторы
3.2. Типы данных
ЛАБОРАТОРНЫЙ ПРАКТИКУМ
Практическая работа 1. Форма и компоненты
Практическая работа 2. Текстовое окно
Практическая работа 3. Переключатели
Практическая работа 4. Организация меню
Практическая работа 5. Массивы и таблицы
Практическая работа 6. Построение графика функции
Практическая работа 7. Списки
Практическая работа 8. Обработка записей и файлов
Практическая работа 9. Многостраничный блокнот
ПРИЛОЖЕНИЯ
Приложение 1. Пример программного кода
Приложение 2. Стандартные функции
Приложение 3. Ключевые термины
Приложение 4. Контрольная работа
СПИСОК ЛИТЕРАТУРЫ.

Бесплатно скачать электронную книгу в удобном формате, смотреть и читать:
Скачать книгу Практикум по дисциплине информатика и программирование, Программирование на Delphi 7, Князева М.Д., 2010 - fileskachat.com, быстрое и бесплатное скачивание.

Скачать djvu
Ниже можно купить эту книгу по лучшей цене со скидкой с доставкой по всей России.

Документы в архиве:

    Воробьева Анжелика Анатольевна

    Преподаватель математики и информатики

    ГОУ СПО СПбХУ им. Н.К. Рериха (техникум)

    г. Санкт-Петербург

    Практические работы разработаны к разделу «Введение в объектно-ориентированное программирование»
    учебника Фиошина М.Е., Ресина А.А., Юнусова С.М. - «Информатика и ИКТ. 10-11 классы. Профильный уровень», с использованием визуальной системы программирования Delphi . Модуль состоит из четырех практических работ линейного программирования:

    ПР №1 «Создание первого приложения»;

    ПР №2 «Компоненты и функции. Умножение двух чисел»;

    ПР № 3 «Решение задач»;

    ПР №4 «Использование функций при решении задач».

‹ ›

Название документа ПР №1.doc

Тема: Практическая работа №1 «Создание первого приложения»

Предмет: Информатика и ИКТ

Класс: 10

Литература:

Ключевые слова:

Задача:

Создать приложение, в котором при щелчке пользователя на кнопке появилась бы какая-нибудь надпись. Знакомство с компонентами TLabel , TButton

Ход работы:

Задайте имя форме «Мое первое приложение», для этого в Object Inspector измените параметр Caption

    Перенесите на пустую форму, которая открылась вам, кнопку типа TButton со страницы Standard палитры компонентов. Для этого выделите пиктограмму кнопки (она седьмая слева) и затем щелкните курсором мыши в нужном вам месте формы. На форме появиться кнопка, которой Delphi присвоит имя по умолчанию Button 1.

Выделите на форме компонент TButton 1- кнопку. Перейдите в Object Inspector и измените её свойство Caption (надпись), которое по умолчанию равно Button 1(имя, которое по умолчанию присвоила этому компоненту Delphi ) на ПУСК.

    Аналогичным образом перенесите на форму с той же страницы Standard палитры компонентов метку TLabel (она на странице четвертая слева). В этой метке в процессе выполнения приложения будет появляться текс при нажатии пользователем кнопки. Delphi присвоит ей имя TLabel 1. Аналогично измените свойства Caption и Font для объекта TLabel 1.

Оператор, который вы написали означает следующее: свойству Caption компонента TLabel 1вы присвоили (:= - операция присваивания) строку текста «Это мое первое приложение»

‹ ›

Название документа ПР №2.doc

Тема: Практическая работа №2 «Компоненты и функции. Умножение двух чисел»

Предмет: Информатика и ИКТ

Класс: 10

Литература: Фиошин М.Е., Ресин А.А., Юнусов С.М. - «Информатика и ИКТ. 10-11 классы. Профильный уровень».

Ключевые слова: информатика, урок, программа, объектно-ориентированное программирование, приложение.

Задача : Создайте приложение, которое при нажатии кнопки перемножало бы два вещественных числа, введенных пользователем, и показывало бы результат умножения.

Знакомство с компонентами TEdit , TPanel и функциями FloatToStr и StrToFloat .

Ход работы:

Задайте имя форме «Умножение чисел», для этого в Object Inspector измените параметр Caption

  1. Перенесите на пустую форму компоненты TButton 1, TLabel 1, TLabel 2, TLabel 3, TEdit 1, TEdit 2, TPanel 1 со страницы Standard палитры компонентов.

Компонент является контейнером для группирования органов управления, но может использоваться и для отображения текста с возможностями объемного оформления. Основное свойство Caption

Отображение, ввод и редактирование однострочных текстов. Имеется возможность оформления объемного бордюра. Основное свойство Text .

    Измените надписи в метках компонентов TLabel 1, TLabel 2, TLabel 3 на «Число1», «Число2», «Результат». Для этого перейдите в Object Inspector и изменяйте их свойство Caption (надпись), в свойстве Font измените шрифт и размер символов.

Замените свойство Caption (надпись) вашей кнопки Button 1на «Расчет»

В свойстве Font измените шрифт и размер символов.

Очистите свойство Caption (надпись) у панели TPanel 1

Попробуйте поварьировать такими свойствами панели, как BevelInner и BevelOuter , которые определяют вид (утопленный - bvLowered или выпуклый - bvRaised ). В итоге форма примет вид:

    Выделите кнопку TButton 1 на форме, перейдите в Object Inspector , откройте в нем страницу событий (Events ), найдите событие кнопки OnClick (но первое сверху) и сделайте двойной щелчок в окне справа от имени этого события. Это стандартный способ задания обработчиков любых событий. Но перейти в обработчик событий OnClick кнопки можно и иначе: достаточно сделать двойной щелчок на компоненте TButton 1 на форме. В обоих случаях вы окажетесь в окне Редактора Кода и увидите там текс

Заголовок этой процедуры складывается из имени класса вашей формы TForm 1, имени компонента TButton 1 и имени события без префикса OnClick . Напишите в обработчике оператор задания:

Оператор, который вы написали означает следующее: свойству Caption компонента TPanel 1 вы присвоили (:= - операция присваивания) значение выражения, указанного в правой части оператора. Знак «+» означает конкатенацию – сцепление двух строк символов. Текст храниться в свойстве Text компонентов TLabel 1 иTLabel 2.

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

Функция StrToFloat преобразует символьное изображение числа в его значение типа действительного числа.

Ваше приложение готово, можете его выполнить. Для этого выполните команду Ran или нажмите горячую клавишу F 9, или воспользуйтесь быстрой кнопкой.

‹ ›

Название документа ПР №3.doc

Тема: Практическая работа №3 «Решение задач»

Предмет: Информатика и ИКТ

Класс: 10

Литература: Фиошин М.Е., Ресин А.А., Юнусов С.М. - «Информатика и ИКТ. 10-11 классы. Профильный уровень».

Ключевые слова: информатика, урок, программа, объектно-ориентированное программирование, приложение.

Задача №1

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

Знакомство с функциями IntToStr и StrToInt .

«Очистить»

var A , B , Res : integer ; «объявляются переменные A ,B ,Res целого типа»

A := StrToInt (Edit 1. Text ); «целой переменной A присваивается значение взятое из компонента Edit 1. Text StrToInt »

B := StrToInt (Edit 2. Text ); «целой переменной В присваивается значение взятое из компонента Edi 2. Text в виде текста и преобразованное в число с помощью функции StrToInt »

Res := A + B ; «переменной Res присваивается значение суммы целых переменных А и В»

Edit 3. Text := IntToStr (Res ); «В компонент Edit 3.Text Res IntToStr »

Edit1.Text:="";

Edit2.Text:="";

Edit3.Text:="";

«Компонентам Edit 1.Text , Edit 2.Text , Edit 3.Text присваивается значение пустого текста»

StrToInt – преобразует текс в целое число (integer )

IntToStr – преобразует целое число(integer ) в текс

Ваше приложение готово, можете его выполнить. Для этого выполните команду Ran или нажмите горячую клавишу F 9, или воспользуйтесь быстрой кнопкой.

Задача №2

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

Задача №3

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

2. Напишите обработчик событий для кнопок «Рассчитать» и «Очистить».

Var A , B , C : integer ; «объявляются переменные A ,B ,С целого типа»

A := StrToInt (Edit 1. Text ); «целой переменной A присваивается значение взятое из компонента Edit 1. Text в виде текста и преобразованное в число с помощью функции StrToInt »

B := StrToInt (Edit 2. Text ); «целой переменной В присваивается значение взятое из компонента Edit 2. Text в виде текста и преобразованное в число с помощью функции StrToInt »

C := A ; A := B ; B := C ; «меняем местами значения переменных»

Edit 1. Text := IntToStr (A ); «В компонент Edit 1.Text кладется значение целой переменной А преобразованное в текс с помощью функции IntToStr »

Edit 2. Text := IntToStr (B ); «В компонент Edit 2.Text кладется значение целой переменной В преобразованное в текс с помощью функции IntToStr »

Задача №4

Создайте приложение, которое при нажатии кнопки возводит Х в степень У.

1. Создайте форму и включите в неё нужные компоненты.

2. Напишите обработчик событий для кнопок «Возвести» и «Очистить».

Для «Очистить» аналогично задаче №1 и №2.

Var X , Y , R : integer ; «объявляются переменные X ,Y ,R вещественного типа»

X := StrToFloat (Edit 1. Text ); « переменной X присваивается значение взятое из компонента Edit 1. Text в виде текста и преобразованное в число с помощью функции StrToFloat »

Y := StrToFloat (Edit 2. Text ); « переменной В присваивается значение взятое из компонента Edit 2. Text в виде текста и преобразованное в число с помощью функции StrToFloat »

R := Exp (Y * Ln (X )); «В языке Pascal нет стандартной операции или функции для вычисления . Для решения такой задачи используют встроенную функцию Эта формула применяется для нецелых показателей степени У,а для целых намного эффективней умножать »

Edit 3. Text := FloatToStr (R ); «В компонент Edit 3.Text кладется значение переменной R преобразованное в текс с помощью функции FloatToStr »

    Ваше приложение готово, запустите и проверьте его

‹ ›

Название документа ПР №4.doc

Тема: Практическая работа №4 «Использование функций при решении задач»

Предмет: Информатика и ИКТ

Класс: 10

Литература: Фиошин М.Е., Ресин А.А., Юнусов С.М. - «Информатика и ИКТ. 10-11 классы. Профильный уровень».

Ключевые слова: информатика, урок, программа, объектно-ориентированное программирование, функции, приложение.

Функции

Модуль

Abs (X)

Возведение в квадрат

Sqr (X)

Вычисление квадратного корня

Sqrt (X)

Степенные

Exp (X)

Ln X

Ln (X)

Тригонометрические

Sin x

Sin (x)

Cos x

Cos (x)

Arctg x

Arctg (x)

Округление

По математическим правилам до целого

Round (X)

Отсекает дробную часть

Trunc (X)

Нахождение целой части от деления двух чисел (дробная часть просто отбрасывается)

X Div Y

Остаток от деления двух целых чисел (отбрасывается целая часть)

X Mod Y

Задача №1

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

procedure TForm4.Button2Click(Sender: TObject);

var Y,X:integer;

begin

X:=StrToInt(Edit1.Text);

Y:=StrToInt(Edit2.Text);

X:=Y+X;

Y:=X-Y;

X:=X-Y;

Edit1.Text:=IntToStr(X);

Edit2.Text:=IntToStr(Y);

end;

ТObject);

begin

Edit1.Text:="";

Edit2.Text:="";

end;

Задача №2

Даны два числа, найти среднее арифметическое данных чисел и среднее геометрическое их модулей.

var A,B,C: extended;

begin

C:= (A+B)/2;

Edit3.Text:=FloatToStr (C);

end;

var A,B,C: extended;

begin

A:= StrToFloat (Edit1.Text);

B:= StrToFloat (Edit2.Text);

C:= Sqrt(Abs(A)*Abs(B));

Edit4.Text:=FloatToStr (C);

end;

procedure TForm1.Button2Click(Sender: ТObject);

begin

Edit1.Text:="";

Edit2.Text:="";

end;

end.

Задача №3

Дан один корень квадратного уравнения и коэффициент С. Известно, что коэффициент А равен 1. Найти второй корень и коэффициент В.

procedure TForm4.Button1Click(Sender: TObject);

Var X1,X2,B,C:extended;

begin

X1:=StrToFloat(Edit1.Text);

C:= StrToFloat(Edit2.Text);

X2:= (C/X1);

Edit3.Text:=FloatToStr(X2);

B:= -(X1+X2);

Edit4.Text:=FloatToStr(B);

end;

procedure TForm1.Button2Click(Sender: ТObject);

begin

Edit1.Text:="";

Edit2.Text:="";

end;

Задача №4

Дано количество секунд с начала суток. Вычислить текущее время в виде количества часов, минут и секунд.

procedure TForm1.Button2Click(Sender: ТObject);

begin

Edit1.Text:="";

Edit2.Text:="";

Edit3.Text:="";

Edit4.Text:="";

end;

begin

close;

end;

procedure TForm1.Button1Click(Sender: TObject);

begin

Edit2.Text:=IntToStr(StrToInt (Edit1.Text) div 3600);

Edit3.Text:= IntToStr((StrToInt(Edit1.Text)-StrToInt(Edit2.Text) *3600) div 60);

Edit4.Text:= IntToStr(StrToInt(Edit1.Text)- StrToInt(Edit2.Text)*3600-StrToInt(Edit3.Text)*60);

end;

Задача №5

Дана длина окружности. Найти площадь данного круга.

procedure TForm1.Button1Click(Sender: TObject);

var L,R,S:extended;

begin

L:= StrToFloat(Edit1.Text);

R:=L/(2*Pi);

Edit 2.Text:=FloatToStr(R);

S:= Pi*(R*R);

Edit 3.Text:=FloatToStr(S);

end;

Задача №6

Дано целое число. Определить в нем количество сотен (не включающее количество тысяч)

var A,B:integer;

begin

A:=StrToInt(Edit1.Text);

B:=(A-(A div 1000)*1000)div 100;

Edit2.Text:=IntToStr(B);

end;

procedure TForm1.Button2Click(Sender: ТObject);

begin

Edit1.Text:="";

Edit2.Text:="";

end;

procedure TForm1.Button3Click(Sender: TObject);

begin

close;

end;

Задача №7

Дано двузначное число. Определить в нем сумму цифр.

procedure TForm1.Button1Click(Sender: TObject);

var A,B:integer;

begin

A:=StrToInt(Edit1.Text);

B:=(A-(A div 10)*10)+(A div 10);

(Из А вычитаем кол-во 10*на 10 и + кол-во 10)

Edit2.Text:=IntToStr(B);

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

Edit1.Text:="";

Edit2.Text:="";

end;

Задача №8

На счет в банке на 5 лет была положена определенная денежная сумма под определенный годовой процент. Проценты начисляются каждый год в зависимости от суммы на счете. Вводятся начальная сумма и годовой процент (от 1 до 100). Какая сумма будет на счете через 5 лет. / S =A *(1+0,01*B )^5/

procedure TForm2.Button1Click(Sender: TObject);

var A,B,S:extended;

begin

A:= StrToFloat(Edit1.Text);

B:= StrToFloat(Edit2.Text);

S:= A*Exp(5*Ln(1+0.01*B));

Edit3.Text:=FloatToStr(S);

end;

procedure TForm2.Button2Click(Sender: TObject);

begin

Edit1.Text:="";

Edit2.Text:="";

Edit3.Text:="";

end;

procedure TForm1.Button3Click(Sender: TObject);

begin

close;

end;

Задача №9

Дана длина ребра куба. Вычислить площадь его боковой поверхности.

procedure TForm1.Button1Click(Sender: TObject);

var A,S:extended;

begin

A:= StrToFloat(Edit1.Text);

S:= 4*A*A;

Edit2.Text:=FloatToStr(S);

end;

Задача №10

Дано вещественное число. Найти его вторую цифру в дробной части.

procedure TForm1.Button1Click(Sender: TObject);

var N: integer; S:extended;

begin

N:= StrToFloat(Edit1.Text);

S:=(N mod 0,1) div 10;

Edit2.Text:=IntToStr(N);

end;

‹ ›

Чтобы скачать материал, введите свой E-mail, укажите, кто Вы, и нажмите кнопку

Приложения для работы с текстом (например, MS Word) играют важную роль в жизни большинства людей. С помощью таких приложений можно набирать и редактировать текстовые документы, сохранять их на диск, распечатывать и т. д.

Задачи урока

  • Работа с компонентом Memo (многострочный редактор).
  • Работа с компонентом CheckBox (переключатель).
  • Понятие компонента-контейнера.

Выполнение упражнения

Сегодня мы создадим простой текстовый редактор с возможностью очистки содержимого рабочей области (рисунок 1). Этот редактор может пригодиться при работе с текстовыми документами.

В среде Delphi такое приложение сделать очень легко, так как имеющийся в нём компонент Memo уже умеет многое из того, что нужно для текстового редактора: работать с многострочным текстом, с буфером обмена, с диском, вставлять и удалять символы, выделять текст, изменять атрибуты шрифта.

Рисунок 1. Окно приложения

1. Дизайн приложения

1. Поместите компонент Memo (вкладка Standard ) на форму. Также добавьте компонент-контейнер Panel . В нём мы разместим кнопки, управляющие приложением. После этого очистите у компонента Panel свойство Caption и измените заголовок формы на надпись «Текстовый редактор ». Примерный результат работы показан на рисунке 2.


Рисунок 2

Компонент Panel обладает очень важной особенностью. Он является компонентом-контейнером . Если на него поместить другие компоненты, то их перемещение будет ограничено границами компонента-контейнера. При перемещении компонента-контейнера по форме всё его содержимое будет перемещаться вместе с ним.

3. Чтобы понять принцип работы компонентов-контейнеров, посмотрите на содержимое окна Дерево объектов (Object TreeView ) (если его не видно на экране, нажмите комбинацию клавиш Ctrl+Shift+F11 ). В нём хранится список всех компонентов, размещённых на форме (рисунок 3а ). Из него видно, что главный контейнер - это форма (Form1 ). На ней расположены два компонента: Memo1 и Panel1 .

А) б) в)
Рисунок 3

4. Увеличьте размер панели до размеров, в двое больших чем многострочный редактор. Измените контейнер у компонента Memo1 с Form1 на Panel1 . Для этого в окне Дерево объектов методом Drag and Drop (Перетащить и оставить) перетащите компонент Memo1 из формы (Form1 ) на панель (Panel1 ), как показано на рисунке 3б . В результате вы увидите, что панель стала обладателем многострочного редактора Memo (рисунок 3в ). Теперь перемещение панели приведёт и к перемещению многострочного редактора.

5. Измените контейнер у компонента Memo1 с Panel1 на Form1 .

3. В принципе, текстовый редактор уже готов. Сохраните проект под именем Editor .

4. Запустите приложение и убедитесь, что вы можете легко набирать и редактировать текст в поле Memo .

Итак, наше приложение, созданное с помощью нескольких нажатий мыши, уже позволяет редактировать текст, и это «плюс». Рассмотрим «минусы»:

  • при запуске приложения компонент Memo содержит совершенно ненужную надпись «Memo1 «;
  • при изменении размеров формы размер поля Memo не меняется, что выглядит некрасиво: при увеличении окна появляется много свободного места, а при уменьшении - появляются полосы прокрутки.

5. Чтобы удалить надпись «Memo1 » в компоненте Memo , необходимо у него очистить свойство Lines (рисунок 3а). Это аналог свойства Text компонента Edit , только в данном случае текст можно вводить многострочный. Итак, в компоненте Memo напротив свойства Lines нажмите на кнопку с тремя точками. Откроется дополнительное окно (рисунок 3б). Удалите весь содержащийся там текст.

А) б)
Рисунок 3

6. Настроим компонент Memo так, чтобы его границы автоматически изменялись при изменении размеров формы с помощью свойства Align (переводится как «выровнять»). Как видно из рисунка 1, компонент Panel должен «прилипнуть» к верхней части окна (Align = alTop ), а компонент Memo должен занять всю остальную площадь (Align = alCliеnt ). Результат показан на рисунке 4а.

7. Запустите приложение и поменяйте размер формы. Размеры компонентов динамически изменятся в зависимости от её размеров. Закройте приложение.

А) б)
Рисунок 4

8. В компонент Panel добавьте четыре кнопки Button и измените их заголовок, как показано на рисунке 4б. Назначение кнопок понятно из их заголовка (свойства Caption ). Дадим им следующие имена (свойство Name ): «Новый » - ButtonNew , «Открыть » -ButtonOpen , «Шрифт » - ButtonFont , «Выход » - ButtonExit , Memo1 - MemoOut .

Отметим, что кнопки «Открыть » и «Шрифт » заработают во второй части этого урока. Сейчас мы просто создаём общий интерфейс.

9. Добавьте из категории Standart в контейнер Panel компонент CheckBox (переключатель). Он будет выполнять функцию быстрого изменения атрибута шрифта «Жирный ». Переименуйте его (измените свойство Name ) в CheckBold (Bold переводится как жирный). Работа с этим компонентом также будет рассмотрена во втором разделе урока. Измените заголовок переключателя (свойство Caption ) на «Жирный » (рисунок 4б).

10. Установите свойство AutoSize=True для панели Panel. Размер панели автоматически изменится так, чтобы вместить все находящиеся на нём компоненты (рисунок 4б).

11. Запустите приложение. У нас получился почти полноценный редактор текста. Но вот беда… Текст мы вводить можем, но ни одна кнопка не работает. Для исправления этого досадного обстоятельства необходимо написать обработку событий OnClick для каждой кнопки.

Закройте приложение.

2. Выходим из приложения

Создайте обработчик события OnClick для кнопки «Выход »

3. Очистим редактор!

1. Выберите кнопку «Новый » и создайте для неё обработчик события OnClick . В нём запишем всего один метод для компонента Memo - Clear , который очищает содержимое этого компонента:

Procedure TForm1.ButtonNewClick (Sender: TObject); begin MemoOut.Clear; end;

Листинг 1

2. Запустите приложение. Теперь мы имеем простейший текстовый редактор с функциями:

  • очистки рабочей области;
  • работы с многострочным текстом;
  • вставки и удаления символов;
  • выделения текста;
  • работы с буфером обмена через горячие клавиши или контекстное меню.

Закройте приложение.

4. Коротко о главном

  • Компонент Memo обладает свойствами многострочного текстового редактора.
  • Свойство Align указывает, к какой стороне окна прижать компонент.
  • Логическое свойство AutoSize определяет, будет ли у компонента автоматический размер, в зависимости от его содержимого.
  • Компонент-контейнер – это компонент, который может содержать другие компоненты. Используется для смыслового объединения компонент.
  • Окно Дерево объектов дает возможность быстрой смены контейнера для компонентов;

Второй раздел урока: Текстовый редактор, или А мы ещё файлы открывать умеем и шрифт изменять тоже…

Выполнение упражнения

Для загрузки текстовых файлов в компонент Memo и изменения параметров шрифта будем использовать стандартные диалоговые окна Windows Шрифт (рисунок 1б) и Открыть (рисунок 1в).

А) б)
в)
Рисунок 1. Окно приложения

1. Открываем файл

1. Откройте проект, созданный в предыдущем разделе урока № 4 - Текстовый редактор, или Наберём и очистим!

2. Из палитры компонентов, категории Dialog , поместите на форму невизуальные компоненты: FontDialog и OpenDialog . В какое место формы мы их поместим, это неважно, потому что они видны только на этапе разработки приложения.

  • Компонент FontDialog - вызывает окно стандартного диалога выбора параметров шрифта Шрифт .
  • Компонент OpenDialog - вызывает окно стандартного диалога выбора файлов Открыть .

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

3. Создайте обработчик события OnClick для кнопки «Открыть ». Он должен:

  • вызывать стандартный диалог открытия файлов;
  • загружать указанный пользователем файл в многострочный редактор (компонент Memo ).

Запишите в обработчике следующий код:

procedure TForm1.ButtonOpenClick(Sender: TObject); begin // Вызываем диалог открытия OpenDialog1.Execute; end ;

Листинг 1

Метод Execute служит для вызова стандартного диалога Windows у всех компонентов (для каждого компонента свой диалог), находящихся на вкладке Dialogs .

Обратите внимание на текст, находящийся после знаков «// », он по умолчанию в Delphi выделен синим цветом. Это комментарии - второй по значимости текст после кода программы. Чтобы не запутаться в написанной программе, необходимо комментировать практически каждую написанную вами строку!

4. Запустите приложение и убедитесь, что при выборе пункта «Открыть » появляется одноимённое диалоговое окно. Однако какой бы файл вы не выбрали, ничего не произойдёт. Это вполне логично - ведь в обработчике нигде не сказано, что нужно делать с выбранным файлом. Закройте приложение.

5. Для того чтобы выбранный файл загружался в многострочный редактор, допишите в обработчик следующий код (выделено жёлтым):

Procedure TForm1.ButtonOpenClick(Sender: TObject); begin // Вызываем диалог открытия OpenDialog1.Execute; // Загружаем содержимое файла в компонент MemoOut MemoOut.Lines.LoadFromFile (OpenDialog1.FileName); end;

Листинг 3

Что это означает? После того как пользователь выбирает файл и нажимает кнопку «Открыть », путь и имя файла помещаются в свойство Filename компонента OpenDialog. Потом содержимое этого файла загружается в многострочный редактор. Для этого используется метод LoadFromFile класса TStrings. Для доступа к этому классу используется свойство компонента Lines .

6. Запустите приложение и откройте любой файл (для примера, в папке «Обеспечение » есть текстовый файл «Demo.txt »). Его содержимое появится в поле компонента Memo, и вы сможете его редактировать.

Закройте приложение и снова запустите. Опять выберите пункт «Открыть «, но в диалоговом окне нажмите кнопку «Отмена «. В результате появится сообщение об ошибке (рисунок 2).


Рисунок 2

Здесь сказано: «Проект Editor.exe вызвал исключение класса EFOpenError с сообщением ‘Не могу открыть файл ‘. Процесс остановлен. Используйте команды Step или Run для продолжения».

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

Нажмите «ОК «. При этом вы увидите текст программы (рисунок 3). Цветом будет выделено то место, в котором программа остановилась. Вы можете нажать F9 , чтобы продолжить программу с этого места (при этом вы увидите сообщение об ошибке ещё раз) или Ctrl+F2 (пункт меню Run ? Program Reset ), чтобы завершить программу.



Рисунок 3

7. Исправим ошибку. Всё дело в том, что вы не выбрали никакого файла, в результате свойство FileName осталось пустым, и метод LoadFromFile не смог открыть файл с пустым именем. Таким образом, необходимо вставить проверку, чтобы файл загружался только в том случае, если нажата клавиша «Открыть » (и действительно: зачем что-то загружать, если пользователь нажал «Отмена «).

Сделать такую проверку очень легко. Метод Execute возвращает логическое значение True (истина), если была нажата кнопка «Открыть «, и False (ложь), если была отмена. Остаётся только проверить это значение с помощью оператора условного перехода:

Procedure TForm1.Button2Click(Sender: TObject); begin // Вызываем диалог открытия и проверяем условие нажатия на кнопку «ОK» If OpenDialog1.Execute then //Загружаем содержимое файла в компонент MemoOut Memo1.Lines.LoadFromFile(OpenDialog1.FileName); end;

Листинг 4

Обратите внимание, что в условии написано OpenDialog1.Execute , вместо OpenDialog1.Execute=True . Эти две записи полностью идентичны, но первая более простая и рекомендуется использовать именно её.

8. Запустите приложение и убедитесь, что теперь всё работает корректно.

Заметьте, что при вызове диалога открытия появляется список всех файлов, которые есть в выбранном каталоге. Но нам не нужен весь список. В приложениях типа Word, Photoshop и многих других в нижней части диалога открытия файлов есть выпадающий список «Тип файлов » (рисунок 4а). С его помощью можно выбрать только те типы файлов, которые будут отображаться в окне.

9. Для того чтобы пользователь мог редактировать фильтр диалога открытия файлов, у компонента OpenDialog есть свойство Filter . Откройте редактор фильтра, нажав на кнопку с тремя точками (рисунок 4б). В левой его части, построчно, записываются имена фильтров, которые будут отображаться в поле «Тип файлов », а в правой непосредственно сам фильтр (правила задания фильтрации стандартные для Windows)

а)
б)
Рисунок 4. Фильтр выбора файлов

10. Заполните три строки фильтрами, как показано на рисунке 4б. При выборе первого поля диалог открытия файлов отобразит только текстовые файлы с расширением txt . Второе поле отображает файлы с расширением pas , и третье отобразит все файлы.

2. Форматируем текст

1. И, наконец, оживим инструменты форматирования текста (кнопка «Шрифт » и переключатель «Жирный »).



Рисунок 5. Диалог выбора параметров шрифта

При нажатии на кнопку «Шрифт » должны происходить следующие действия:

  • все параметры шрифта (название, размер, цвет, стиль и пр.) компонента MemoOut передаются компоненту FontDialog. При этом в стандартном диаловом окне Windows Шрифт автоматически выставляются требуемые параметры;
  • открывается стандартный диалог шрифта (рисунок 5);
  • проверка, что пользователь нажал на кнопку «ОK », чтобы программе не прогонять оставшиеся два пункта вхолостую;
  • передача компоненту MemoOut параметров шрифта из компонента FontDialog;
  • изменение, если необходимо, состояния переключателя CheckBold .

Создайте обработчик события OnClick для кнопки «Шрифт » и запишите в нём следующий код:

Procedure TForm1.ButtonFontClick(Sender: TObject); begin // Передаём компоненту FontDialog параметры шрифта из компонента Memo FontDialog1.Font:= MemoOut.Font; // Открываем диалог шрифта If FontDialog1.Execute then begin // Передаём компоненту Memo параметры шрифта из компонента FontDialog MemoOut.Font:= FontDialog1.Font; // Изменяем, если необходимо, состояния переключателя CheckBold.Checked:= fsbold in FontDialog1.Font.Style; end; end;

Листинг 5

Поясним код:

Замечательной особенностью объектно-ориентированного программирования является возможность присвоения одинаковых значений одного компонента другому, если они принадлежат одному классу. Например, свойство Font (размер шрифта, цвет и пр.) класса TFont присутствует в объектах Memo и FontDialog , поэтому достаточно написать: FontDialog1.Font:=MemoOut.Font , чтобы передать все параметры свойства Font от объекта Memo объекту FontDialog .

Отметим особенность установки состояния переключателя «жирный »: fsbold in FontDialog1.Font.Style . Дело в том, что свойство Style у класса Font имеет тип множество. И данная конструкция означает проверку: входит ли значение fsbold в множество значений Style , и если входит, то возвращает значение True , иначе False.

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

3. Переключатель CheckBox с именем CheckBold на панели Panel предназначен для более быстрой установки жирного шрифта. Создайте обработчик события OnClick для переключателя и запишите в нём следующий код:

Procedure TForm1.CheckBoldClick(Sender: TObject); begin // Проверка состояния переключателя CheckBold // Если включен, то текст в MemoOut делаем жирным If CheckBold.Checked then MemoOut.Font.Style:= MemoOut.Font.Style + // Если выключен, то текст в MemoOut делаем светлым else MemoOut.Font.Style:= MemoOut.Font.Style - end;

Листинг 6

Изменение стиля шрифта через компоненты CheckBox осуществляется через всё то же свойство Font.Style . Синтаксис записи соответствует работе с множествами.

4. Теперь в последний раз запустите приложение. Всё работает? Отлично!

3. Коротко о главном

  • Для открытия диалога всех компонентов, расположенных в категории Dialogs палитры компонентов, служит метод Execute .
  • Метод Execute возвращает значение логического типа, определяющее результат работы с диалоговым окном.
  • Стиль шрифта (Style ) задаётся через множество.
  • В случае появления сообщения об ошибке, клавишей F9 можно продолжить работу приложения.
  • В диалоге открытия файлов можно задавать любое количество фильтров для типов файлов, по правилам Windows.

Выполнение заданий

Особенности задания

  • Для полей ввода Edit необходимо ввести поясняющие надписи с помощью компонента Label.
  • Компоненты должны иметь осмысленные имена.
  • Кнопка выхода из приложения - обязательна!

1. Вычисление явно заданной функции. Сделать программу,и консольный вариант программы, вычисления значения функции. Реализовать проверку области определения данной функции. Использовать компоненты Label, Edit, Button, BitBtn, LabeledEdit. Нарисовать значок в (ImageEditor) и использовать его в программе. Подобрать соответствующие изображения указателя (Cursor). Сделать возможным изменение прозрачности формы (AlphaBlend). Изменить тип границы формы, параметры шрифта, цвета элементов управления. Использовать подсказки (Hint). Использовать ShowMessage для сообщения об ошибках.

2. Определение принадлежности точки замкнутой области.

Задание: Написать программу определения находится ли заданной точка в данной области.

Использовать компоненты: Image, MainMenu, PopupMenu, Checkbox, RadioButton и ActionList.

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

3. Вычисление значений конечной суммы ряда.

Задание: Вычислить сумму степенного ряда. Использовать несколько форм. Разместить условия на первой форме, остальные данные и функционал на других формах.

Использовать компоненты: Shape, Bevel, Splitter.

Использовать формы в модальном режиме и в обычном. Использовать шаблоны форм, поместить их в хранилище объектов.

4. Обработка одномерных массивов.

Написать программу обращения с вектором данных.

Задание: Делением числовых данных данного вектора на сумму наибольшего и наименьшего. получить новый вектор чисел.

Использовать компоненты: Memo, ListBox.

5. Обработка двумерных массивов(матрицы).

Использовать: PageControl, StringGrid, Закладки, блок try...except.

Задание: Упорядочить строки, данной матрицы чисел, по убыванию элементов, стоящих в определенном столбце.

6. Обработка строк.

Работа с данными строкового типа.

Использовать компоненты: ImageList, RichEdit, ToolВаr.

Задание: Получить новую строку, поменяв первое и последнее "слова". Использовать функции или процедуры, а так же модули.

7. Нарисовать график заданной функции.

Использовать: OnResize, ClientHeight, ClientWidth, OLEContainer, TEdit, Chart.

8. Создание анимированного изображения.

Требования к программе: Два двигающихся с разной скоростью обьекта. Один как процедура, отрисовав отдельные дуги, линии с помощью метода базовой точки. Второй нарисованный в ImageEditor, изменяя свойства Left и Top поместить в компонент Image. Использовать Timer. Реализовать остановку и изменение направления движения.

Задание: Объекты "Катер" и "Яхта".

9. Работа с типизированными файлами.

Использовать компоненты: OpenDialog, SaveDialog. Создать соответствующие фильтры для этих компонентов.

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

10. Работа с локальной базой данных.

Использовать: Paradox для БД, механизм доступа к данным BDE, DataSource, Table, DataModule, DBGrid, DBNavigator, DBEdit, DBText, Query и DBChart. Реализовать программное изменение текста SQL-запроса.

Задание: Создать БД "Школа", с информацией: фамилия, класс, год рождения учащегося, адрес, телефон. Определить, у скольких учеников есть телефон. Составить списоки учеников заданного класса.