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

Лаб.работы по программированию

.pdf
Скачиваний:
30
Добавлен:
21.05.2015
Размер:
1.07 Mб
Скачать

Основная программа

Program Main;

Uses Vectors;

Var x, y, z, n : vector; begin

ReadVector(x); ReadVector(y); Add(x, y, z); WriteVector(z); x := vectors.nulvector; WriteVector(x);

end.

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

Дописать предлагаемый модуль vectors.pas процедурами разности и произведения векторов. Использовать модуль в программе.

Лабораторная работа 12. Решение простейших задач в Console Application

ВWindows95 и более поздних версиях существуют консольные приложения

программы, которые работают в окне так называемого «сеанса DOS». То есть это Windows-программы, не имеющие окон.

Для создания нового файла выбираем (File – Console Application).

У консольного приложения нет формы. Текст программы записываем в окне программного кода по аналогии с Pascal. Для ввода-вывода информации в консоле используются операторы write(ln) и read(ln). Клавишу F9 используем, чтобы откомпилировать и запустить программу.

Рассмотрим пример программы

{$APPTYPE CONSOLE} program Hello; uses Windows; begin

WriteLn ("Hello, Delphi");

Write ("Press Enter...");

ReadLn; //задержка экрана должна быть произведена обязательно end.

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

Вариант 1.

1.Даны a, b и c, введенные с клавиатуры. Найти сумму положительных из них.

©ИМПИ ОГПУ

2.Дана строка s. Построить перевёрнутую строку. Например, из слова ПРИВЕТ должно получиться ТЕВИРП.

3.Дан двумерный массив произвольной размерности. Заполните его таким образом, чтобы элементы выше главной диагонали были равными 0, остальные равными 1.

Вариант 2.

1.Даны a, b, и c из интервала [-13,13], генерируемые случайным образом. Найти количество отрицательных из них.

2.Дана строка s. Заменить все знаки препинания на 0, буквы – цифрой 1.

3.Дан двумерный массив произвольной размерности. Найти сумму положительных элементов его главной и побочной диагоналей.

Вариант 3.

1.Даны a, b и c из интервала [-12,12], генерируемые случайным образом. Найти количество чисел кратных 5.

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

3.Дан двумерный массив произвольной размерности. Найти сумму элементов его главной диагонали.

Вариант 4.

1.Даны a, b и c из интервала [-10,10], генерируемые случайным образом. Найти сумму четных элементов.

2.Дана строка s. Заменить все цифры знаком *, а буквы — знаком +.

3.Дан линейный массив произвольной размерности. Найти среднее арифметическое его положительных элементов. Заменить положительные элементы на среднее арифметическое.

Лабораторная работа 13. Динамические массивы

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

Например,

var a: array of integer;

aa: array of array of real;

Размерность устанавливается в теле программы:

SetLength(a, 10); //длинна массива а – 10 элементов.

SetLength(aa, 10, 10); //размерность матрицы 10 х 10.

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

© ИМПИ ОГПУ

for i := Low(a) to High(a) do

//здесь i — перечислимого типа

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

Вариант 1

1.Заполнить массив числами, введенными с клавиатуры. Вывести его элементы в обратном порядке.

2.Дан целочисленный массив. Преобразовать его, прибавив к четным числам первыйэлемент. Первый и последний элементы массива не изменять.

3.Дана матрица. Найти сумму и произведение элементов k-го столбца данной матрицы.

Вариант 2.

1.Заполнить массив случайными числами. Поменять местами минимальный и максимальный элементы массива.

2.Заменить все положительные элементы целочисленного массива на значение среднего арифметического эго элементов.

3.Дана матрица. Найти минимальное значение в каждой строке.

Вариант 3.

1.Дан линейный массив. Отсортировать его по убыванию.

2.Дан целочисленный массив. Преобразовать его, прибавив к нечетнымчислам последнийэлемент. Первый и последний элементы массива не изменять.

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

Вариант 4.

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

2.Заменить все отрицательные элементы целочисленного массива на значение минимального элемента.

3.Дана матрица. Найти минимальное значение в каждом столбце.

Лабораторная работа 14. Тип данных Variant

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

Когда на этапе проектирования программы мы не можем четко определить тип данных определенной переменной, можно воспользоваться типом Variant.

© ИМПИ ОГПУ

Var V: Variant; begin

V := 5; V := ’text’; V := true; V := 3.6; end.

Тип значения переменной типа вариант можно узнавать с помощью функции VarType (V: Variant): Word; Она возвращает значение из набора констант. Например, константа VarInteger означает целое число.

Возможные

Обозначение

значения

функции:

 

varEmpty

Вариант пустой

VarSmallint

Smallint

varInteger

Integer

varSingle

Single

varDouble

Double

varCurrency

Currency

varDate

TDateTime

varOLEStr

WideString

varError

Код ошибки

varBoolean

Boolean

varUnknown

Неизвестный объект

varByte

Byte

varString

AnsiString

Для преобразования типов используется функция VarAsType (Const V: Variant, type: integer): Variant; Например:

V := 23; V := VarAsType (V, VarString);

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

VarToStr (V:Variant): String;

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

По введенной переменной типа Variant выводить сообщение о том, принадлежит ли она типу Byte или String.

Лабораторная работа 15. Тип TDateTime

Переменная типа TDateTime представляет собой действительное число. Его целая часть соответствует дате и содержит количество дней, прошедших с 30 декабря 1899 года, дробная часть соответствует времени и равна части суток, прошедшей с момента их начала.

© ИМПИ ОГПУ

Для обработки даты и времени модуль SysUtils содержит следующие основные функции:

function Date: TDataTime; Возвращает текущую дату как значение типа TDateTime.

 

function

DateToStr(Date:

TDateTime):

string;

 

Преобразовывает дату, указанную параметром Date, в строку в

 

соответствии с форматом, определяемым глобальной переменной

 

ShortDateFormat.

TDateTime):

Integer;

 

function

DayOfWeek(Date:

Возвращает номер дня недели для даты, указанной параметром Date. Для воскресенья возвращается значение 1, для понедельника — 2 и т. д.

function EncodeDate(Year, Month, Day: Word): TDateTime; Собирает значение даты из заданных составляющих Year, Month и Day и возвращает его, как значение типа TDateTime.

function IncMonth(const Date: TDafeTime; NumberOfMonths: Integer): TDateTime; Возвращает значение даты, увеличенное на указанное параметром NumberOf-Months количество месяцев.

function IsLeapYear(Year: Word): Boolean; Определяет,

является ли год, указываемый параметром Year, високосным.

function Now: TDateTime; Возвращает значение текущей даты и времени.

function StrToDate(const S: string): TDateTime;

Преобразовывает значение строки, указываемое параметром S, в дату типа

TDateTime.

function Time: TDateTime; Возвращает текущее значение времени.

function

TimeToStr(Time:

TDateTime):

string;

Преобразовывает время в строку в соответствии с форматом, определяемым глобальной переменной LongTimeFormat.

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

1.Вывести на экран текущую дату и время.

2.Определить, является ли введенный с клавиатуры год, високосным.

3.Вывести количество понедельников в году, введенном с клавиатуры.

4.Вывести количество «несчастливых» пятниц 13 в году, введенном с клавиатуры.

Лабораторная работа 16. Простейшие задачи на форме

В основном работа с компонентами осуществляется на форме (класс TForm). Основная форма – это главное окно будущей программы. На нем можно расположить

© ИМПИ ОГПУ

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

Рассмотрим основные свойства и события формы. Большинство из них присутствуют и у других компонентов.

Caption – текстовое свойство, задающее заголовок формы.

BorderIcons – свойство, определяющее какие кнопки должны присутствовать у окна. Это свойство раскрывающееся.

Color – цвет клиентской области окна.

Font – шрифт, используемый при вводе текста на форму. Выбирается с помощью стандартного окна Windows для выбора шрифта.

Height высота окна формы в пикселях (целое число).

Width – ширина окна формы в пикселях (целое число).

Hint текст подсказки, который будет появляться в строке состояния при наведении указателя мыши на компонент.

Tag – это свойство целого типа. Оно ни на что не влияет и программист может использовать его по своему усмотрению.

Top y-координата верхнего края окна.

Visible – свойство логического типа. Если оно равно true, то компонент видимый, false – невидимый.

WindowState состояние окна после запуска приложения; бывают нормальное, максимизированное и минимизированное состояние.

Класс компонентов TButton – кнопка. Основное свойство – Caption (заголовок).

Рассмотрим три основных класса компонентов для вывода текста на форму:

TLabel (Метка). Используется для вывода вспомогательной информации на форму. Основное свойство – Caption (заголовок).

TEdit (Одна строка). Используется для ввода и вывода информации. Основное свойство – Text.

©ИМПИ ОГПУ

TMemo (Несколько строк). Используется для ввода и вывода многострочной информации. Основные свойства – Text; Lines с методами Add (’строка’), Clear.

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

1.Найти среднее арифметическое пяти введенных чисел.

2.По введенным сторонам найти площадь треугольника по формуле

Герона.

3.Ответить на вопрос является ли треугольник равнобедренным по введенным сторонам.

4.Найти медиану трех чисел.

5.Решить квадратное уравнение вида ax2+bx+c=0.

Лабораторная работа 17. Флажки и переключатели

Флажки в среде программирования используются для переключения между состояниями: да/нет или да/нет/не уверен. В последнем случае флажок устанавливается, но выглядит блекло. Этот выбор отражается в свойстве State компонента, доступном как для чтения, так и для записи. State может быть трёх типов: установлен (Checked), не установлен (Unchecked), не уверен (Alignment). При двойном щелчке мышью на элементе CheckBox1 появится процедура TForm1.CheckBox1Click(Sender: TObject);

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

Checked.

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

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

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

© ИМПИ ОГПУ

Лабораторная работа 18. Работа с меню

ГЛАВНОЕ МЕНЮ

Компонент класса TMainMenu определяет главное меню формы (программы). Он является невизуальным компонентом.

1.Установите компонент на форму.

2.Создайте пункты меню. Для этого следует дважды щелкнуть по компоненту мышью.

Меню обладает свойством Caption, в котором можно задать его имя. Каждый пункт меню может содержать подменю или являться конечной командой. Для создания подпунктов:

3.Щелкните мышью ниже пункта меню и введите имя первого пункта подменю.

В названиях пунктов можно указать символ амперсанда (&) перед тем символом, который определит клавишу быстрого вызова: &Файл.

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

вкачестве имени очередного пункта меню дефис (-).

ВDelphi имеется возможность связывать с пунктами меню небольшие изображения. Эти изображения можно задать либо свойством BitMap, либо

свойством ImageIndex. Изображение (если оно есть) появляется слева от названия пункта меню.

КОНТЕКСТНОЕ МЕНЮ

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

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

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

открыть, сохранить и закрыть файл; выйти из программы;

работа с буфером обмена (копировать, вырезать, вставить);

вызов диалоговых окон для выбора начертания шрифта и цвета.

© ИМПИ ОГПУ

Лабораторная работа 19. Работа со списками

СПИСКИ ВЫБОРА

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

Для доступа к строкам списка используется свойство Items. Оно во многом похоже свойству Lines класса TMemo.

Чтобы выбрать несколько элементов списка можно использовать свойство MultiSelect. Устанавливается значение true для выбора нескольких позиций с помощью мыши. Для этого необходимо щелкать по нужным элементам удерживая клавишу Ctrl.

ВЫПАДАЮЩИЕ СПИСКИ

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

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

Продолжить работу с простейшим текстовым редактором, дополнив его выпадающим списком для выбора названия шрифта. Например, для изменения названия шрифта в метке Label1 на Arial запишем: Label1.Font.Name := ’Arial’;

Напишите программу, складывающую два вектора, которые отображаются на экране в виде списков координат. Ввод координат в вектор осуществляется набором их в строке ввода и нажатием кнопки «Enter». Вам необходимо написать обработчик события OnKeyDown. Инициализацию количества элементов векторов следует произвести при создании формы в обработчике события OnActivate.

Примечание: Для ввода координат в вектор по клавише Enter обработаем событие OnKeyDown для компонентов класса TEdit следующим образом:

if (key=vk_return) then // если нажата клавиша Enter, тогда ...

© ИМПИ ОГПУ

Лабораторная работа 20. Таймер. Работа с календарем

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

TDateTimePicker – ввод и отображение даты/времен

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

Свойство

 

 

Описание

 

 

CalAlignment

Определяет положение раскрывающегося календаря:

 

dtaLeft – слева от компонента; dtaRight – справа от

 

компонента. Учитывается только для Kind=dtkDate и

 

DateMode=dmComoBox

 

 

 

CalColors

Цвет календаря

 

 

 

Checked

Если

выполняются

условия

Checked=True

и

 

ShowCheckBox=True,

то флажок

рядом с полем

даты

 

(времени) будет показан и установлен. Наличие флажка или

 

его отсутствие разрешает или запрещает ручной ввод даты

 

или времени

 

 

 

Date

Содержит введенную дату

 

 

DateFormat

Определяет формат показа даты: dfShort – 11.01.04;

 

dfLong – 5 сентября 2004 г.

 

 

DateMode

Определяет способ выбора даты: dmComboBox – с помощью

 

раскрывающегося календаря; dmUpDown – с помощью

 

встроенного компонента TUpDown

 

 

Kind

Определяет содержимое компонента: dtkDate – дата;

 

dtkTime – время

 

 

 

MaxDate

Определяет максимальную дату, которую может выбрать или

 

ввести пользователь

 

 

 

MinDate

Определяет минимальную дату, которую может выбрать или

 

ввести пользователь

 

 

 

Time

Содержит введенное пользователем время

 

© ИМПИ ОГПУ