рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

Информатики и радиоэлектроники

Информатики и радиоэлектроники - раздел Философия, Министерство Образования Республики Беларусь Белорусский Государстве...

Министерство образования республики беларусь

Белорусский государственный университет

информатики и радиоэлектроники

____________________________________________________________________

кафедра “вычислительные методы и программирование”

 

 

А.Б. Закалюкин, С.В. Колосов,

А.А. Навроцкий, А.К. синицын, А.И. Шакирин

 

Программирование

В среде DELPHI

Лабораторный практикум для студентов всех специальностей

 

Минск 1998


УДК 621.3.6.

 

 

Программирование в среде DELPHI. Лабораторный практикум для студентов всех специальностей / А.Б. Закалюкин, С.В. Колосов, А.А. Навроцкий, А.К. Синицын, А.И. Шакирин; Под общ. ред. А.К. Синицына. – Мн.: БГУИР, 1998. – 94 с. ISBN 985-444–026–5.

 

В лабораторном практикуме приведены краткие теоретические сведения по основам программирования в среде DELPHI, а также по языку программирования Object Pascal. После каждой темы приведено 30 индивидуальных заданий.

В практикум вошло 8 лабораторных работ.

 

Ил. 10, табл.2, список лит.- 3 назв.

 

Рецензент: В.К. Полевиков,

доц. каф. “Вычислительная математика”, БГУ

 

ISBN 985–444–026-5 © Коллектив авторов, 1998


Содержание

Тема 1. Программирование линейных алгоритмов 4

Тема 2. Программирование разветвляющихся алгоритмов 14

Тема 3. Программирование циклических алгоритмов 20

Тема 4. Программирование с использованием массивов 26

Тема 5. Программирование с использованием строк 32

Тема 6. Программирование с использованием записей и файлов 38

Тема 7. Программирование с использованием подпрограмм и модулей 49

Тема 8. Программирование с использованием средств для отображения графической информации 54

ПРиложение 1. Команды основного меню 60

ПРиЛОЖЕНИЕ 2. Свойства компонентов 65

ПРИЛОЖЕНИЕ 3. Простые типы данных языка object Pascal 86

ПРИЛОЖЕНИЕ 4. Процедуры и функции для работы со строками 89

ПРИЛОЖЕНИЕ 5. Математические формулы 92

Литература 93

 

 


Тема 1. Программирование линейных алгоритмов

Цель лабораторной работы: научиться составлять каркас простейшей программы в среде DELPHI. Написать и отладить программу линейного алгоритма.

Интегрированная среда разработчика DELPHI

    Главное окно всегда присутствует на экране и предназначено для управления процессом создания программы. Основное… Окно инспектора объектов (вызывается c помощью клавиши F11) предназначено для… Окно формы представляет собой проект Windows-окна программы. В это окно в процессе написания программы помещаются…

Структура программ DELPHI

В файле проекта находится информация о модулях, составляющих данный проект. Файл проекта автоматически создается и редактируется средой… Файл исходного текста – программный модуль (Unit) предназначен для размещения текстов программ. В этом файле…

Interface

// Раздел объявлений

Implementation

// Раздел реализации

Begin

// Раздел инициализации

End.

 

При компиляции программы DELPHI создает файл с расширением .dcu, содержащий в себе результат перевода в машинные коды содержимого файлов с расширением .pas и .dfm. Компоновщик преобразует файлы с расширением .dcu в единый загружаемый файл с расширением .exe. В файлах, имеющих расширение .~df, .~dp, .~pa, хранятся резервные копии файлов с образом формы, проекта и исходного текста соответственно.

 

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

Задание: составить программу вычисления для заданных значений x, y, z арифметического выражения

.

Панель диалога программы организовать в виде, представленном на рис.1.2.

Настройка формы.

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

Изменение заголовка формы

Новая форма имеет одинаковые имя (Name) и заголовок (Сaption) - FORM1. Имя формы менять не рекомендуется, т.к. оно входит в текст программы.

Для изменения заголовка вызовите окно инспектора объектов (F11) и щелкните кнопкой мыши на форме. В форме инспектора объектов найдите и щелкните мышью на Properties – Caption . В выделенном окне наберите “Лаб. раб. N1. Ст. гр. 740102 Иванов А.А.”.

Размещение строки ввода (TEdit)

В данной программе с помощью однострочного редактора будут вводиться переменные x,y,z типа extended или integer. Выберите в меню компонентов Standard пиктограмму , щелкните мышью в том месте… Так как численные значения переменных x,y,z имеют действительный тип для преобразования строковой записи числа,…

Размещение надписей (TLabel)

На форме рис. 1.2 имеются четыре пояснительные надписи. Для нанесения таких надписей на форму используется компонент TLabel. Выберите в меню компонентов Standard пиктограмму , щелкните на ней мышью. После этого в нужном месте формы щелкните мышью, появится надпись Label1. Проделайте это для четырех надписей. Для каждой надписи, щелкнув на ней мышью, отрегулируйте размер и, изменив свойство Caption инспектора объектов, введите строку, например “Введите значение X:”, а также выберите размер символов (свойство Font).

Обратите внимание, что в тексте программы автоматически появились четыре новых переменных типа .TLabel. В них хранятся пояснительные строки, которые можно изменять в процессе работы программы.

Размещение многострочного окна вывода (TMemo)

В тексте программы появилась переменная Memo1 типа ТMemo. Информация, которая отображается построчно в окно типа ТMemo, находится в массиве строк… Для чистки окна используется метод Memo1.Clear. Для того чтобы добавить новую… Если нужно вывести число, находящееся в переменной действительного или целого типа, то его надо предварительно…

Написание программы обработки события создания формы (FormCreate)

При запуске программы возникает событие «создание формы» (OnCreate). Создадим программу – обработчик этого события, которая заносит начальные значения переменных x, y, z в соответствующие окна TEdit, а в окне ТMemo помещает строку с указанием номера группы и фамилию студента. Для этого дважды щелкнем мышью на любом свободном месте формы. На экране появится текст, в котором автоматически внесен заголовок процедуры - обработчика события создания формы: Procedure TForm1.FormCreate(Sender:TObject). Между begin…end вставим текст программы (смотрите пример, расположенный ниже).

Написание программы обработки события нажатия кнопки (ButtonClick)

Поместите на форму кнопку, которая описывается компонентом ТButton, для чего выберем в меню компонентов Standart пиктограмму . С помощью инспектора объектов измените заголовок (Caption) – Button1 на слово “Выполнить” или другое по вашему желанию. Отрегулируйте положение и размер кнопки.

После этого два раза щелкните мышью на кнопке, появится текст программы, дополненной заголовком процедуры обработчика события - нажатия кнопки ( Procedure TForm1.ButtonClick(Sender:TObject); ).

Наберите текст этой процедуры, приведенный в примере.

Запуск и работа с программой

    Работа с программой происходит следующим образом. Нажмите (щелкните мышью) кнопку “Выполнить”. В окне Memo1… Текст программы имеет вид:  

Выполнение индивидуального задания

Ниже приведено 30 вариантов задач. По указанию преподавателя выберите свое индивидуальное задание. Уточните условие задания, количество, наименование, типы исходных данных. В соответствии с этим установите необходимое количество окон Edit, тексты заголовков на форме, размеры шрифтов, а также типы переменных и функции преобразования при вводе и выводе результатов.

Прочтите в прил.1 описание меню File, Edit, Run, а в прил.2 описание компонентов TEdit, TMemo, TButton. С помощью инспектора объектов измените цвет формы, шрифт выводимых символов.

Индивидуальные задания

1.

При x=14.26, y=-1.22, z=3.5´t=0.564849.

2.

При x=-4.5, y=0.75´,z=0.845u=-55.6848.

3.

При x=3.74, y=-0.825, z=0.16, v=1.0553.

4.

При x=0.4,y=-0.875, z=-0.475w=1.9873.

5.

При x=-15.246, y=4.642, z=20.001=-182.036.

6.

При x=16.55, y=-2.75, z=0.15 =-38.902.

7.

При x=0.1722, y=6.33, z=3.25=-172.025.

8.

При x=-2.235, y=2.23, z=15.221 =39.374.

9.

При x=1.825, y=18.225, z=-3.298=1.2131.

10.

При x=3.981, y=-1.625, z=0.512 a=1.26185.

11.

При x=6.251, y=0.827, z=25.001 b=0.7121.

12.

При x=3.251, y=0.325, z=0.466c=4.025.

13. .

При x=17.421, y=10.365, z=0.828f=0.33056.

14. .

При x=12.3, y=15.4, z=0.252g=82.8257.

15. .

При x=2.444, y=0.869, z=-0.13-0.49871.

16. Вывести на экран 1 или 0 в зависимости от того, имеют три заданных целых числа одинаковую четность или нет.

17. Найти сумму цифр заданного четырехзначного числа.

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

19. Вывести на экран 1 или 0 в зависимости от того, равна ли сумма двух первых цифр заданного четырехзначного числа сумме двух его последних цифр.

20. Вывести на экран 1 или 0 в зависимости от того, равен ли квадрат заданного трехзначного числа кубу суммы цифр этого числа.

21. Вывести на экран 1 или 0 в зависимости от того, есть ли среди первых трех цифр дробной части заданного положительного вещественного числа цифра ноль.

22. Вывести на экран 1 или 0 в зависимости от того, есть ли среди цифр заданного трехзначного числа одинаковые.

23. Присвоить целой переменной k третью от конца цифру в записи положительного целого числа n.

24. Присвоить целой переменной k первую цифру из дробной части положительного вещественного числа.

25. Целой переменной S присвоить сумму цифр трехзначного целого числа k.

26. Идет k-я секунда суток. Определить, сколько полных часов (h) и полных минут (m) прошло к этому моменту.

27. Определить f – угол (в градусах) между положением часовой стрелки в начале суток и ее положением в h часов, m минут и s секунд (0<=h<=11, 0<=m, s<=59).

28. Определить h – полное количество часов и m – полное количество минут, прошедших от начала суток до того момента( в первой половине дня), когда часовая стрелка повернулась на f градусов(0<=f<360, f – вещественное число).

29. Пусть k – целое от 1 до 365. Присвоить целой переменной n значение 1,2,…6 или 7 в зависимости от того, на какой день недели ( понедельник, вторник,…, суббота или воскресенье) приходится k- й день невисокосного года, в котором 1 января - понедельник.

30. Поменять местами значения целых переменных x и y, не используя дополнительные переменные.

Тема 2. Программирование разветвляющихся алгоритмов

Цель лабораторной работы: научиться пользоваться простейшими компонентами организации переключений (TСheckBox, TRadioGroup). Написать и отладить программу разветвляющегося алгоритма.

Операторы if и case языка Паскаль

Для программирования разветвляющихся алгоритмов в языке Pascal используются специальные переменные типа boolean, которые могут принимать только два значения - true и false (да, нет), а также операторы if и case. Оператор if проверяет результат логического выражения, или значение переменной типа boolean, и организует разветвление вычислений.

Например, если bl: boolean, x,y,u:integer, то фрагмент программы с оператором if может быть таким:

bl:=x>y;

ifbl then u:=x-y;

else u:=x-y;

Оператор выбора case организует разветвления в зависимости от значения некоторой переменной перечисляемого типа.

Например, если In: integer, то после выполнения

case in of

0: u:=x+y;

1: u:=x-y;

2: u:=x•y;

else u=0;

end;

в соответствии со значением in вычисляется u. Если in=0, то u=x+y, если in=1, то u=x-y, если in=2, то u=x*y и, наконец, u=0 при любых значениях in отличных от 0, 1 или 2.

Кнопки-переключатели в Delphi

При создании программ в DELPHI для организации разветвлений часто используются компоненты в виде кнопок-переключателей. Состояние такой кнопки (включено - выключено) визуально отражается на форме. На форме (рис.2.1) представлены кнопки-переключатели двух типов (TCheckBox, TRadioGroup ).

Компонент TCheckBox организует кнопку независимого переключателя, с помощью которой пользователь может указать свое решение типа да/нет. В программе состояние кнопки связано со значением булевской переменной, которая проверяется с помощью оператора if.

Компонент TRadiogroup организует группу кнопок - зависимых переключателей. При нажатии одной из кнопок группы все остальные кнопки отключаются. В программу передается номер включенной кнопки (0,1,2,..), который анализируется с помощью оператора case.

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

Задание: ввести три числа - x,y,z. Вычислить по усмотрению u=sin(x) или u=cos(x), или u=tg(x). Найти по желанию максимальное из трех чисел: max(u,y,z), или max (|u|,|y|,|z|).

Cоздать форму, представленную на рис. 2.1, и написать соответствующую программу.

Coздание формы

Создайте форму, такую же как в первом задании, скорректировав текст надписей и положение окон TEdit.

Работа с компонентом TСheckBox

Выберите в меню компонентов Standard пиктограмму и поместите ее в нужное место формы. С помощью инспектора объектов измените заголовок (Caption) на “maxabs”. В тексте программы появилась переменная CheckBox1 типа TСheckBox. Теперь в зависимости от того, нажата или нет кнопка, булевская переменная CheckBox1.Checked будет принимать значения true или false.

Работа с компонентом TRadioGroup

После этого на форме внутри окаймления появится три кнопки-переключателя с введенными надписями. Обратите внимание на то, что в тексте программы появилась переменная…

Создание обработчиков событий FormСreate и Botton1Сlick

Запустите программу и убедитесь в том, что все ветви алгоритма выполняются правильно. Форма приведена на рис.2.1. Текст программы приведен ниже.  

Выполнение индивидуального задания

По указанию преподавателя выберите индивидуальное задание из нижеприведенного списка. В качестве f(x) использовать по выбору: sh(x), x2, ex. Отредактируйте вид формы и текст программы, в соответствии с полученным заданием.

    1.   2.
    3.     4.
    5.     6.
    7.     8.
    9.     10.
  11.   12.
  13.   14.

15.

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

17. По номеру n (n>0) некоторого года определить c – номер его столетия (учесть, что, к примеру, началом XX столетия был 1901, а не 1900 год!).

18. Значения переменных a, b и с поменять местами так, чтобы оказалось a<=b<=c.

19. Дано целое k от 1 до 180. Определить, какая цифра находится в k-й позиции последовательности 10111213…9899 , в которой выписаны подряд все двузначные числа.

20. Дано натуральное k. Определить k–ю цифру в последовательности 110100100010000100000…, в которой выписаны подряд степени 10.

21. В старояпонском календаре был принят 60-летний цикл, состоявший из пяти 12-летних подциклов. Подциклы обозначались названиями цвета: green (зеленый), red (красный), yellow (желтый), white (белый) и black (черный). Внутри каждого подцикла годы носили названия животных: крысы, коровы, тигра, зайца, дракона, змеи, лошади, овцы, обезьяны, курицы, собаки и свиньи. (1984 год – год зеленой крысы –был началом очередного цикла). Разработать программу, которая вводит номер некоторого года нашей эры и выводит его название по старояпонскому календарю.

22. Если сумма трех попарно различных действительных чисел x, y, z меньше единицы, то наименьшее из этих трех чисел заменить полусуммой двух других; в противном случае заменить меньшее из x и y полусуммой двух оставшихся значений.

23. Для целого числа k от 1 до 99 вывести фразу “мне k лет”, учитывая при этом, что при некоторых значениях k слово “лет” надо заменить на слово “год” или “года”.

24. Для натурального числа k вывести фразу “мы выпили k бутылок пива”, согласовав окончание слова “бутылка” с числом k.

25. Type курс=(C,В,Ю,З); {север, восток, юг, запад}

Приказ=(вперед, вправо, назад, влево);

Var K1,K2:курс; ПР:приказ;

Корабль сначала шел по курсу K1, а затем его курс был изменен согласно приказу ПР. Определить K2 - новый курс корабля.

26. Type месяц=(январь,февраль,март,апрель,май,июнь,июль,август,

сентябрь,октябрь,ноябрь,декабрь);

день=1..31;

var d1,.d2:день;

m1,m2:месяц;

t:boolean;

Переменной t присвоить значение 1 если дата d1, m1 предшествует (в рамках года) дате d2, m2, и значение 0 в других случаях.

27. Type нота=(до,ре,ми,фа,соль,ля,си);

интервал=(секунда,терция,кварта,квинта,секста,септима);

var n1,n2:нота;

i:интервал;

Определить i-й интервал, образованный нотами n1 и n2(n1¹n2): секунда - это интервал из двух соседних (по кругу) нот (например, ре и ми, си и до), терция -интервал через ноту (например, фа и ля, си и ре) и т.д.

28. Type единица=(дециметр,километр,метр,миллиметр,сантиметр);

длина=real;

Var x : длина;

P : единица;

Значение переменной x, означающее некоторую длину в единицах p,заменить на величину этой же длины в метрах.

29. Type сезон=(зима,весна,лето,осень);

Var m:месяц; {определение «месяц» см. в 26}

S:сезон;

Определить s-сезон, на который приходится месяц m.

30. Var k:1..9; Вывести значение переменной k римскими цифрами.

Тема 3. Программирование циклических алгоритмов

Цель лабораторной работы: изучить простейшие средства отладки программ в среде DELPHI. Составить и отладить программу циклического алгоритма.

Операторы организации циклов repeat, whyle, for языка Pascal

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

Для организации повторений в языке Pascal предусмотрены три различных оператора цикла.

Оператор

Repeat

<операторы>

until<условие>;

организует повторение операторов, помещенных между ключевыми словами repeat и until, до тех пор, пока не выполнится <условие>=true, после чего управление передается следующему за циклом оператору.

Оператор

While<условие>do begin

<операторы>

End;

организует повторение операторов, помещенных между begin и end, до тех пор, пока не выполнится <условие>=fulse. Заметим, что если <условие>=fulse при первом входе, то <операторы> не выполнятся ни разу, в отличие от repeat, в котором хотя бы один раз они выполнятся.

Оператор

for i:=i1 to i2 do begin

<операторы>

End;

организует повторение операторов при нарастающем изменении переменной цикла i от начального значения i1 до конечного i2 с шагом “единица”. Заметим, что если i2>i1, то <операторы> не выполнятся ни разу. Модификация оператора fori:=i2downtoi1do begin<операторы>endорганизует повторения при убывающем изменении i на единицу.

Средства отладки программ в DELPHI

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

Порядок выполнения задания

Задание: написать и отладить программу, которая выводит таблицу значений функции S(x) для х изменяющихся в интервале от X1 до X2 c шагом h.

Панель диалога представлена на рис.3.1.

 
 

Текст программы приведен ниже.

unit tema3;

 

interface

 

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls, ExtCtrls;

 

type

TForm1 = class(TForm)

Memo1: TMemo;

Button1: TButton;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Edit1: TEdit;

Edit2: TEdit;

Edit3: TEdit;

Edit4: TEdit;

procedure FormCreate(Sender: TObject);

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

 

var

Form1: TForm1;

 

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);

begin

Edit1.text:='0';

Edit2.text:='2';

Edit3.text:='5';

Edit4.text:='0,25';

Memo1.Clear;

Memo1.Lines.Add('Результаты ст. гр.920201 Петрова И.И.');

end;

 

procedure TForm1.Button1Click(Sender: TObject);

var x1,x2,x,h,a,s:extended;

N,k,c:integer;

begin

 

x1:=StrToFloat(Edit4.Text);

Memo1.Lines.Add(' x1='+Edit1.Text);

x2:=StrToFloat(Edit2.Text);

Memo1.Lines.Add(' x2='+Edit2.Text);

N:=StrToInt(Edit3.Text);

Memo1.Lines.Add(' N='+Edit1.Text);

h:=StrToFloat(Edit4.Text);

Memo1.Lines.Add(' h='+Edit4.Text);

c:=-1; x:=x1;

repeat

a:=1; S:=1;

for k:=1 to N do

begin

a:=c*a*x/k;

s:=s+a;

end;

Memo1.Lines.Add('при x='+FloatToStrF(x,ffFixed,6,2)+' сумма ='

+FloatToStrF(s,ffFixed,6,2));

x:=x+h;

until x>x2;

end;

end.

После отладки программы составьте тест (N=2, X1=0, X2=1, h=3), установите курсор на первый оператор (N:= ), нажмите клавишу F4. После этого нажимая клавишу F7, выполните пошаговую программу и проследите, как меняются все переменные в процессе выполнения.

Выполнение индивидуального задания

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

Индивидуальные задания

В заданиях с №1 по 15 (табл. 3.1.) необходимо вывести на экран таблицу значений функции Y(x) и ее разложения в ряд S(x) для x изменяющихся от xn до xk с шагом h=(xn-xk)/10. Близость значений S(x) и Y(x) во всем диапазоне значений x указывает на правильность вычисления S(x) и Y(x).

Таблица 3.1

S(x) n Y(x)
    0.1      
    0.1    
    0.1    
    0.1      
    0.1    
    0.1    
    0.1    
    0.1      
    0.1    
      Окончание табл. 3.1
    0.1   0.5    
    0.1    
    0.1        
    -2   -0.1  
    0.2   0.8  
    0.1   0.8    

16. Подсчитать k - количество цифр в десятичной записи целого неотрицательного числа n.

17. Переменной t присвоить значение 1 или 0 в зависимости от того, является ли натуральное число k степенью 3.

18. Дано n вещественных чисел. Вычислить разность между максимальным и минимальным из них.

19. Дана непустая последовательность различных натуральных чисел, за которой следует 0. Определить порядковый номер наименьшего из них.

20. Даны целое n>0 и последовательность из n вещественных чисел, среди которых есть хотя бы одно отрицательное число. Найти величину наибольшего среди отрицательных чисел этой последовательности.

21. Дано n вещественных чисел. Определить, образуют ли они возрастающую последовательность.

22. Дана последовательность из n целых чисел. Определить, со скольких отрицательных чисел она начинается.

23. Определить k – количество трехзначных натуральных чисел, сумма цифр которых равна n(1<=n<=27). Операции деления (/, div и mod) не использовать.

24. Вывести на экран в возрастающем порядке все трехзначные числа, в десятичной записи которых нет одинаковых цифр (операции деления не использовать).

25. Переменной t присвоить значение 1 или 0 в зависимости от того, можно или нет натуральное число n представить в виде трех полных квадратов.

26. Дано натуральное число n. Выяснить, входит ли цифра 3 в запись числа n2.

27. Дано натуральное число n. Найти сумму его цифр.

28. Дано целое n>0, за которым следует n вещественных чисел. Определить, сколько среди них отрицательных.

29. Дано натуральное число n. Переставить местами первую и последнюю цифры числа n.

30. Дано натуральное число n. Заменить порядок следования цифр числа n на обратный.

Тема 4. Программирование с использованием массивов

Цель лабораторной работы: изучить свойства компонента TStringGrid. Написать программу с использованием массивов.

Работа с массивами

Тип массива или сам массив определяются соответственно в разделе типов (Type) или переменных (Var) с помощью ключевого слова Arrayследующим… Array[описание индексов] of <тип элемента массива> Примеры описания массивов:

Компонент TStringGrid

При работе с массивами ввод и вывод информации на экран удобно организовывать в виде таблиц. Компонент TStringGrid предназначен для отображения информации в виде двумерной таблицы, каждая ячейка которой представляет собой окно однострочного редактора (аналогично окну TEdit). Доступ к информации осуществляется с помощью свойства Cells[ACol, ARow: Integer]: string, где ACol, Arow - индекс элемента двумерного массива. Свойства ColCount и RowCount устанавливают количество строк и столбцов в таблице, а свойства FixedCols и FixedRows задают количество строк и столбцов фиксированной зоны. Фиксированная зона выделена другим цветом, и в нее запрещен ввод информации с клавиатуры.

Порядок выполнения задания

Задание: создать программу для определения вектора , где А - квадратная матрица размерностью NxN, а Y, B – одномерные массивы размерностью N. Элементы вектора Y определяются по формуле . Значения N вводить в компонент TEdit, А и B - в компонент TStringGrid. Результат, после нажатия кнопки типа TButton, вывести в компонент TStringGrid.


Панель диалога приведена на рис. 4.1.

Настройка компонента TStringGrid

Текст программы приведен ниже. unit tem4;  

Индивидуальные задания

Во всех заданиях по теме «Массивы» скалярные переменные вводить с помощью компонента TEdit с соответствующим пояснением в виде компонента TLabel. Скалярный результат выводить в виде компонента TLabel. Массивы представлять на форме в виде компонентов TStringGrid, в которых 0-й столбец и 0-ю строку использовать для отображения индексов массивов. Вычисления выполнять, после нажатия кнопки типа TВutton.

1. Задана матрица размером NxM. Получить массив B, присвоив его k-му элементу значение 0, если все элементы k-го столбца матрицы нулевые, и значение 1 в противном случае.

2. Задана матрица размером NxM. Получить массив B, присвоив его k-му элементу значение 1, если элементы k–й строки матрицы упорядочены по убыванию, и значение 0 в противном случае.

3. Задана матрица размером NxM. Получить массив B, присвоив его k-му элементу значение 1, если k-я строка матрицы симметрична, и значение 0 в противном случае.

4. Задана матрица размером NxM. Определить k – количество “особых” элементов матрицы, считая элемент “особым”, если он больше суммы остальных элементов своего столбца.

5. Задана матрица размером NxM. Определить k – количество “особых” элементов матрицы, считая элемент “особым”, если в его строке слева от него находятся элементы, меньшие его, а справа – большие.

6. Задана символьная матрица размером NxM. Определить k - количество различных элементов матрицы (т.е. повторяющиеся элементы считать один раз).

7. Дана матрица размером NxM. Упорядочить ее строки по неубыванию их первых элементов.

8. Дана матрица размером NxM. Упорядочить ее строки по неубыванию суммы их элементов.

9. Дана матрица размером NxM. Упорядочить ее строки по неубыванию их наибольших элементов.

10. Определить, является ли заданная квадратная матрица n-го порядка симметричной относительно побочной диагонали.

11. Для матрицы размером NxM вывести на экран все ее седловые точки. Элемент матрицы называется седловой точкой, если он является наименьшим в своей строке и одновременно наибольшим в своем столбце или, наоборот.

12. В матрице n-го порядка переставить строки так, чтобы на главной диагонали матрицы были расположены элементы, наибольшие по абсолютной величине.

13. В матрице n-го порядка найти максимальный среди элементов, лежащих ниже побочной диагонали, и минимальный среди элементов, лежащих выше главной диагонали.

14. В матрице размером NxM поменять местами строку, содержащую элемент с наибольшим значением со строкой, содержащей элемент с наименьшим значением.

15. Из матрицы n-го порядка получить матрицу порядка n-1 путем удаления из исходной матрицы строки и столбца,на пересечении которых расположен элемент с наибольшим по модулю значением.

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

17. Дан массив, содержащий от 1 до k символов, за которым следует точка. Вывести этот текст в обратном порядке.

18. Дан непустой массив из цифр. Вывести на экран цифру, наиболее часто встречающуюся в этом массиве.

19. Отсортировать элементы массива X по возростанию.

20. Элементы массива X расположить в обратном порядке.

21. Элементы массива X циклически сдвинуть на k позиций влево.

22. Элементы массива X циклически сдвинуть на n позиций вправо.

23. Преобразовать массив X по следующему правилу: все отрицательные элементы массива перенести в начало, а все остальные – в конец, сохраняя исходное взаимное расположение, как среди отрицательных, так и среди остальных элементов.

24. Элементы каждого из массивов X и Y упорядочены по неубыванию. Объединить элементы этих двух массивов в один массив Z так, чтобы они снова оказались упоряченными по неубыванию.

25. Дан массив из k символов. Определить, симметричен ли он, т.е. читается ли он одинаково слева направо и справа налево.

26. Дано два массива. Найти наименьшее среди тех элементов первого массива, которые не входят во второй массив.

27. Определить количество инверсий в этом массиве X (т.е. таких пар элементов, в которых большее число находится слева от меньшего: xi>xj при i<j).

28. Дан массив из строчных латинских букв. Вывести на экран в алфавитном порядке все буквы, которые входят в этот текст по одному разу.

29. Вывести на экран заданный массив из k символов, удалив из него повторные вхождения каждого символа.

30. Определить сколько различных символов входит в заданный текст, содержащий не более k символов и оканчивающийся точкой (в сам текст точка не входит).

 

Тема 5. Программирование с использованием строк

Цель лабораторной работы: изучить правила работы с компонентами TListBox и TСomboBox. Написать программу работы со строками.

Типы данных для работы со строками

5.1.1. Короткие строки типа ShortString и String[N]

Короткие строки имеют фиксированное количество символов. Строка ShortString может содержать 255 символов. Строка String[N] может содержать N символов, но не более 255. Первый байт этих переменных содержит длину строки.

Длинная строка типа String

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

Процедуры и функции для работы с короткими и длинными строками представлены в прил. 4.

Широкая строка типа WideString

Введена для обеспечения совместимости с компонентами, основанными на OLE-технологии. От типа String отличается только тем, что для представления каждого символа используется не один, а два байта.

Нуль-терминальная строка типа PChar

Представляет собой цепочку символов, ограниченную символом #0. Максимальная длина строки ограничена только доступной программе памятью. Нуль-терминальные строки широко используются при обращениях к API-функциям Windows (API – Application Program Interface – интерфейс прикладных программ).

Представление строки в виде массива символов

Строка может быть описана как массив символов. Если массив имеет нулевую границу, он совместим с типом PChar.

Var

MasS : array[1…100] of Char;

В отличие от нуль-терминальной строки здесь длина имеет фиксированное значение и не может меняться в процессе выполнения программы.

Компонент TListBox

Компонент TListBox представляет собой список, элементы которого выбираются при помощи клавиатуры или мыши. Список элементов задается свойством Items, методы Add, Delete и Insert которого используются для добавления, удаления и вставки строк. Объект Items (TString) хранит строки, находящиеся в списке. Для определения номера выделенного элемента используется свойство ItemIndex.

Компонент TComboBox

Комбинированный список TComboBox представляет собой комбинацию списка TListBox и редактора TЕdit, поэтому практически все свойства заимствованы у этих компонентов. Для работы с окном редактирования используется свойство Text как в TEdit, а для работы со списком выбора - свойство Items как в TListBox. Cуществует Пять модификаций компонента, определяемых его свойством Style. В модификации csSimple список всегда раскрыт, в остальных он раскрывается после нажатия кнопки справа от редактора.

Компонент TBitBtn

Компонент TBitBtn расположен на странице Additonal палитры компонентов и представляет собой разновидность стандартной кнопки TBotton. Его отличительная особенность – наличие растрового изображения на поверхности кнопки, которое определяется свойством Clyph. Кроме того, имеется свойство Kind, которое задает одну из 11 стандартных разновидностей кнопок. Нажатие любой из них, кроме bkCustom и bkHelp закрывает модальное окно и возвращает в программу результат mr*** (например bkOk - mrOk). Кнопка bkClose закрывает главное окно и завершает работу программы.

Обработка событий

Для создания обработчика события необходимо раскрыть список компонентов в верхней части окна инспектора объектов и выбрать необходимый компонент.… Каждый компонент имеет свой набор обработчиков событий, однако некоторые из…

Порядок выполнения индивидуального задания

Задание: написать программу подсчета числа слов в произвольной строке. В качестве разделителя может быть любое число пробелов. Для ввода строк и работы с ними использовать TComboBox. Ввод строки заканчивать нажатием клавиши Enter. Для выхода из программы использовать кнопку Close.

Панель диалога будет иметь вид (рис. 5.1).

Текст программы приведен ниже.

 

unit tema5;

 

interface

 

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls, Buttons;

 

type

TForm1 = class(TForm)

Label2: TLabel;

Label3: TLabel;

BitBtn1: TBitBtn;

ComboBox1: TComboBox;

Label1: TLabel;

procedure FormActivate(Sender: TObject);

procedure ComboBox1KeyPress(Sender: TObject; var Key: Char);

procedure ComboBox1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

 

var

Form1: TForm1;

 

implementation

 

{$R *.DFM}

 

// Обработка события активизации формы

procedure TForm1.FormActivate(Sender: TObject);

begin

ComboBox1.SetFocus; // Передача фокуса ComboBox1

end;

 

// Обработка события нажатия левой клавиши мыши

procedure TForm1.ComboBox1KeyPress(Sender: TObject; var Key: Char);

begin

if key=#13 then begin // Если нажата клавиша Enter, то...

ComboBox1.Items.Add(ComboBox1.Text); // Строка из окна редактирования

// заносится

в список выбора

ComboBox1.Text:=''; // Очистка окна редактирования

end;

end;

 

procedure TForm1.ComboBox1Click(Sender: TObject);

var st : string;

n,i,nst,ind: integer;

begin

n:=0; // Содержит число слов

ind:=0;

nst:=ComboBox1.ItemIndex; // Определение номера выбранной строки

st:=ComboBox1.Items[nst]; // Занесение выбранной строки в переменную st

for i:=1 to Length(st) do begin // Просмотр всех символов строки st

case ind of

0 : if st[i]<>' ' then begin // Если встретился символ после пробела

ind:=1;

n:=n+1; // Число слов увеличивается на единицу

end;

1 : if st[i]=' ' then ind:=0; // Если встретился пробел после символов

end;

end;

 

Label3.Caption:=IntToStr(n); // Вывод числа слов в Label3

 

end;

 

end.

 

 
 

5.7. Индивидуальные задания

Во всех заданиях исходные данные вводить с помощью компонента TEdit в компонент TListBox либо с помощью свойства Text в свойство Items компонента TComboBox. Скалярный результат выводить c помощью компонента TLabel. Ввод строки заканчивать нажатием клавиши Enter. Для выхода из программы использовать кнопку Close. Для расчетов вводить несколько различных строк.

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

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

3. Дана строка, состоящая из групп нулей и единиц. Подсчитать количество символов в самой длинной группе.

4. Дана строка, состоящая из групп нулей и единиц. Найти и вывести на экран группы с четным количеством символов.

5. Дана строка, состоящая из групп нулей и единиц. Подсчитать количество единиц в группах с нечетным количеством символов.

6. Дана строка, состоящая из букв, цифр, запятых, точек, знаков “+” и “-“. Выделить подстроку, которая соответствует записи целого числа (т.е. начинается со знака “+” или “-“ и внутри подстроки нет букв, запятых и точек).

7. Дана строка символов, состоящая из букв, цифр, запятых, точек, знаков “+” и “-“. Выделить подстроку, которая соответствует записи вещественного числа с фиксированной точкой

8. Дана строка символов, состоящая из букв, цифр, запятых, точек, знаков “+” и “-“. Выделить подстроку, которая соответствует записи вещественного числа с плавающей точкой

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

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

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

12. Дана строка символов, состоящая из произвольного текста на английском языке, слова разделены пробелами. Вывести на экран порядковый номер слова, накрывающего k-ю позицию (если на k-ю позицию попадает пробел, то номер предыдущего слова).

13. Дана строка символов, состоящая из произвольного текста на английском языке, слова разделены пробелами. Разбить исходную строку на две подстроки, причем первая длиной k-символов (если на k-ю позицию попадает слово, то его следует отнести ко второй строке, дополнив первую пробелами до k-позиций).

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

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

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

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

18. Дана строка символов, состоящая из произвольного текста на английском языке, слова разделены пробелами. Поменять местами i- и j-е слова.

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

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

21. Дана строка символов SS…S, в которой могут встречаться цифры, пробелы, буква “E” и знаки “+”, “-“. Известно, что первый символ Sявляется цифрой. Из данной строки выделить подстроки, разделенные пробелами. Определить, является ли первая подстрока числом. Если да, то выяснить: целое или вещественное число, положительное или отрицательное.

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

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

24. Дана строка символов, содержащая некоторый текст. Разработать программу, которая определяет, является ли данный текст палиндромом, т.е. читается ли он слева направо так же, как и справа налево ( например, «А роза упала на лапу Азора»).

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

26. Составить программу, которая читает построчно текст другой программы ( ввести с клавиатуры ) на языке Pascal, подсчитывает количество ключевых слов «begin» и «end» и выводит на экран соответствующее сообщение.

27. Разработать программу, которая заданное целое число от 1 до 1999 выводит на экран римскими цифрами.

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

29. Дан текст из k символов. Вывести на экран только строчные русские буквы, входящие в этот текст.

30. Дан текст из k символов. Вывести на экран в алфавитном порядке все различные прописные русские буквы, входящие в этот текст.

Тема 6. Программирование с использованием записей и файлов

Цель лабораторной работы: изучить правила работы с компонентами TOpenDialog и TSaveDialog. Написать программу с использованием файлов и данных типа запись.

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

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

Type {Объявление типа запись}

TStudent = record

Fio: string[20]; {Поле ф.и.о.}

Group: integer; {Поле номера студ. группы}

Ocn: array[1..3] of integer; {Поле массива оценок}

end;

Var

Student: TStudent; {Объявление переменной типа запись}

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

Student.Fio:= ‘Иванов А.И.’; {Внесение данных в поля записи}

Student. Group:=720603;

. . .

Доступ к полям можно осуществлять также при помощи оператора with:

With Student do

Begin

Fio:= ‘Иванов А.И.’;

Group:=720603;

End;

Работа с файлами

Текстовой файл – это файл, состоящий из строк. Примером текстового файла может служить файл исходного текста программы в DELPHI (расширение *.pas).… Типизированные файлы имеют строго заданную их описанием структуру, когда все… Нетипизированный файл – это файл, в котором данные не имеют определенного типа и рассматриваются как…

. . .

AssignFile(F, ‘Filename.txt’); // Связывание файловой переменной F

// с именем дискового файла “Filename.txt”

Rewrite(F); // Создание нового или открытие (Reset(F);)

// уже существующего файла

. . .

Read(F, Stud); // Чтение данных из файла или

// запись (Write(F, Stud)) в файл

. . .

CloseFile(F); // Закрытие файла

Подпрограммы работы с файлами

Reset(var F[: File; RecSize: word]) - открывает существующий файл. При открытии нетипизированного файла RecSize задает размер элемента файла. Rewrite(var F[: File; RecSize: word]) - создает и открывает новый файл. Append(var F: TextFile) - открывает текстовой файл для дописывания текста в конец файла.

Компоненты TOpenDialog и TSaveDialog

Компоненты TOpenDialog и TSaveDialog находятся на странице DIALOGS (см. прил. 2). Все компоненты этой страницы являются невизуальными, т.е. не видны в момент работы программы. Поэтому их можно разместить в любом удобном месте формы. Оба рассматриваемых компонента имеют идентичные свойства и отличаются только внешним видом. После вызова компонента появляется диалоговое окно, с помощью которого выбирается имя программы и путь к ней. В случае успешного завершения диалога имя выбранного файла и маршрут поиска содержaтся в свойстве FileName. Для фильтрации файлов, отображаемых в окне просмотра, используется свойство Filter, а для задания расширения файла, в случае, если оно не задано пользователем, – свойство DefaultExt. Если необходимо изменить заголовок диалогового окна, используется свойство Title.

Порядок выполнения задания

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

Настройка компонентов TOpenDialog и TSaveDialog

Для того, чтобы файл автоматически записывался с расширением .dat, в свойстве DefaultExt запишем требуемое расширение - .dat. Аналогичным образом настроим SaveDialog1 для текстового файла (расширение…

Работа с программой

Текст программы приведен ниже.   unit tema6;

Выполнение индивидуального задания

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

1. В магазине формируется список лиц, записавшихся на покупку товара повышенного спроса. Каждая запись этого списка содержит: порядковый номер, Ф.И.О., домашний адрес покупателя и дату постановки на учет. Удалить из списка все повторные записи, проверяя Ф.И.О. и домашний адрес.

2. Список товаров, имеющихся на складе, включает в себя наименование товара, количество единиц товара, цену единицы и дату поступления товара на склад. Вывести в алфавитном порядке список товаров, хранящихся больше месяца, стоимость которых превышает 1000000 руб.

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

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

5. На междугородной АТС информация о разговорах содержит дату разговора, код и название города, время разговора, тариф, номер телефона в этом городе и номер телефона абонента. Вывести по каждому городу общее время разговоров с ним и сумму.

6. Информация о сотрудниках фирмы включает: Ф.И.О., табельный номер, количество проработанных часов за месяц, почасовой тариф. Рабочее время свыше 144 часов считается сверхурочным и оплачивается в двойном размере. Вывести размер заработной платы каждого сотрудника фирмы за вычетом подоходного налога, который составляет 12% от суммы заработка.

7. Информация об участниках спортивных соревнований содержит: наименование страны, название команды, Ф.И.О. игрока, игровой номер, возраст, рост, вес. Вывести информацию о самой молодой, рослой и легкой команде.

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

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

10. Информация о сотрудниках предприятия содержит: Ф.И.О., номер отдела, должность, дату начала работы. Вывести списки сотрудников по отделам в порядке убывания стажа.

11. Ведомость абитуриентов, сдавших вступительные экзамены в университет, содержит: Ф.И.О., адрес, оценки. Определить количество абитуриентов, проживающих в г.Минске и сдавших экзамены со средним баллом не ниже 4.5, вывести их фамилии в алфавитном порядке.

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

13. У администратора железнодорожных касс хранится информация о свободных местах в поездах дальнего следования на ближайшую неделю в следующем виде: дата выезда, пункт назначения, время отправления, число свободных мест. Оргкомитет международной конференции обращается к администратору с просьбой зарезервировать m мест до города N на k-й день недели с временем отправления поезда не позднее t часов вечера. Вывести время отправления или сообщение о невозможности выполнить заказ в полном объеме.

14. Ведомость абитуриентов, сдавших вступительные экзамены в университет, содержит: Ф.И.О. абитуриента, оценки. Определить средний балл по университету и вывести список абитуриентов, средний балл которых выше среднего балла по университету. Первыми в списке должны идти студенты, сдавшие все экзамены на 5.

15. В радиоателье хранятся квитанции о сданной в ремонт радиоаппаратуре. Каждая квитанция содержит следующую информацию: наименование группы изделий(телевизор, радиоприемник и т. п.),марку изделия, дату приемки в ремонт, состояние готовности заказа (выполнен, не выполнен). Вывести информацию о состоянии заказов на текущие сутки по группам изделий.

16. Разработать программу формирования ведомости об успеваемости студентов. Каждая запись этой ведомости должна содержать: номер группы, Ф.И.О. студента, оценки за последнюю сессию. Вывести списки студентов по группам. В каждой группе Ф.И.О. студентов должны быть расположены в порядке убывания среднего балла.

17. В исполкоме формируется список учета нуждающихся в улучшении жилищных условий. Каждая запись этого списка содержит: порядковый номер, Ф.И.О., величину жилплощади на одного члена семьи и дату постановки на учет. По заданному количеству квартир, выделяемых по данному списку в течение года, вывести весь список с указанием ожидаемого года получения квартиры.

18. Имеется список женихов и список невест. Каждая запись списка содержит пол, имя, возраст, рост, вес, а также требования к партнеру: наименьший и наибольший возраст, наименьший и наибольший вес, наименьший и наибольший рост. Объединить эти списки в список пар с учетом требований к партнерам без повторений женихов и невест.

19. В библиотеке имеется список книг. Каждая запись этого списка содержит: фамилии авторов, название книги, год издания. Вывести информацию о книгах, в названии которых встречается некоторое ключевое слово (ввести с клавиатуры).

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

21. Каждая запись списка вакантных рабочих мест содержит: наименование организации, должность, квалификацию (разряд или образование), стаж работы по специальности, заработную плату, наличие социального страхования (да/нет), продолжительность ежегодного оплачиваемого отпуска. Вывести список рабочих мест в соответствии с требованиями клиента.

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

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

Type

Pole=record

Ver:(a,b,c,d,e,f,g,h); {вертикальные координаты}

Hor:1..8; {горизонтальные координаты}

end;

Вывести шахматную доску, пометив крестиками все поля, которые «бьет» ферзь, стоящий на поле с координатами Verи Hor, и ноликами - остальные поля.

24. Поля шахматной доски характеризуются записью (см. задание 23)

Var Figura:Pole;

Вывести сообщение, может ли конь за один ход перейти с поля Figurai на поле Figuraj.

25. Type

Karta=record

m: (piki,trefi,bubni,chervi); {масть}

d:(shest,sem,vosem,devjat,desjat,valet,dama,korol,tuz); {достоинство}

end;

Var k1,k2:Karta;

Вывести сообщение, «бьет» ли карта k1 карту k2, с учетом того что масть mi является козырной.

26. Для участия в конкурсе на замещение вакантной должности сотрудника фирмы желающие подают следующую информацию: Ф.И.О., год рождения, образование(среднее, специальное, высшее), знание иностранных языков(английский, немецкий, французский, владею свободно, читаю и перевожу со словарем), владение компьютером (MSDOS,Windows), стаж работы , наличие рекомендаций. Вывести список претендентов в соответствии с требованиями руководства фирмы.

27. При постановке на учет в ГАИ автолюбители указывают следующие данные: марка автомобиля, год выпуска, номер двигателя, номер кузова, цвет, номерной знак, Ф.И.О и адрес владельца. Вывести список автомобилей, проходящих техосмотр в текущем году, сгруппированных по маркам автомобилей. Учесть, что если текущий год четный, техосмотр проходят автомобили с четными номерами двигателей, иначе – с нечетными номерами.

28. Для участия в конкурсе исполнителей необходимо заполнить следующую анкету: Ф.И.О., год рождения, название страны, класс музыкального инструмента(гитара, фортепиано, скрипка, виолончель). Вывести список самых молодых лауреатов конкурса по классам инструментов в порядке занятых мест.

29. Список группы студентов содержит следующую информацию: Ф.И.О., рост и вес. Вывести Ф.И.О. студентов, рост и вес которых чаще всего встречаются в списке.

30. Список группы студентов содержит следующую информацию: Ф.И.О., рост и вес. Вывести Ф.И.О. студентов, рост и вес которых являются в списке уникальными.

Тема 7. Программирование с использованием подпрограмм и модулей

Цель лабораторной работы: изучить возможности DELPHI для написания подпрограмм и создания модулей. Составить и отладить программу, использующую внешний модуль UNIT с подпрограммой.

Использование подпрограмм

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

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

Подпрограммы подразделяются на процедуры и функции.

Процедура имеет следующую структуру:

Procedure <имя процедуры> ([список формальных параметров]);

Const [описание используемых констант];

Type[описание используемых типов];

Var [описание используемых переменных];

Begin

… // Операторы

End;

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

Function <имя функции> ([список формальных параметров]): <тип результата>;

Const [описание используемых констант];

Type[описание используемых типов];

Var [описание используемых переменных];

Begin

… // Операторы

Result:= … ; // Занесение результата вычислений в Result

End;

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

Type <имя> = function ([список формальных параметров]):<тип результата>;

или Type <имя> = procedure ([список формальных параметров]);.

Имя процедуры или функции должно быть уникальным в пределах программы. Список формальных параметров необязателен и может отсутствовать. Если же он есть, то в нем перечисляются через точку с запятой имена формальных параметров и их типы. Имеется три вида формальных параметров: параметры-значения, параметры-переменные, параметры-константы. При вызове подпрограммы передача данных для этих видов осуществляется по-разному. Параметры-значения копируются, и подпрограмма работает с их копией, поэтому при вызове на месте такого параметра можно ставить арифметическое выражение. При использовании параметров-переменных (в описании перед ними ставится Var) и параметров-констант в подпрограмму передается адрес и она работает с самой переменной. С помощью параметров-переменных подпрограмма передает результаты своей работы вызывающей программе.

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

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

Использование модулей

Заголовок состоит из зарезервированного слова Unit и следующего за ним имени модуля, которое должно совпадать с именем дискового файла.… Интерфейсная часть расположена между зарезервированными словами interface и… Исполняемая часть начинается зарезервированным словом implementation и содержит описание процедур и функций,…

Порядок выполнения задания

Задание: написать программу вывода на экран таблицы функции, которую оформить в виде процедуры. В качестве функции использовать по выбору Tg(x), ch(x) и sin2(x).

Создание модуля

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

Для создания модуля в меню File выбрать File New, и затем в репозитории - пиктограмму . В результате будет создан файл с заголовком Unit Unit1. Имя модуля можно сменить на другое, отвечающее внутреннему содержанию модуля, например Unit Matfu;. Затем необходимо сохранить файл с именем, совпадающим с именем заголовка модуля: Matfu.pas. Следует обратить внимание на то, что имя файла должно совпадать с именем модуля, иначе DELPHI не сможет подключить его к другой программе.

Подключение модуля

    Панель диалога будет иметь следующий вид (рис. 7.1). Тексты модуля и вызывающей программы приведены ниже. Текст модуля:

Выполнение индивидуального задания

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

Тема 8. Программирование с использованием средств для отображения графической информации

Цель лабораторной работы: изучить возможности построения графиков с помощью компонента отображения графической информации TСhart. Написать и отладить программу построения на экране графика заданной функции.

Как строится график с помощью компонента TChart

    Построение графика (диаграммы) производится после вычисления таблицы значений функции y=f(x) на интервале [Xmin,…

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

Задание: составить программу, отображающую графики функций sin(x) и cos(x) на интервале [Xmin, Xmax]. Предусмотреть возможность изменения разметки координатных осей, а также шага построения таблицы.

Настройка формы

Панель диалога программы организуется в виде, представленном на рис.8.1.

Для ввода исходных данных используются окна TEdit. Компонент TChart вводится в форму путем нажатия пиктограммы в меню компонентов Standard.

Работа с компонентом TChart

Для изменения надписи над графиком на странице Titles в многострочном редакторе набрать: “Графики функций”. Для разметки осей выбрать страницу Axis и научиться устанавливать параметры… Нажимая различные кнопки меню, познакомиться с другими возможностями EditingChat.

Написание программы обработки события создания формы

В данном месте программы устанавливаются начальные пределы и шаг разметки координатных осей. Когда свойство Chart1.BottomAxis.Automatic имеет значения False, автоматическая установка параметров осей не работает.

Написание программ обработки событий нажатия на кнопки

Текст программы имеет вид: unit tem8;  

Выполнение индивидуального задания

Постройте графики функций для соответствующих вариантов из темы №1. Таблицу данных получить изменяя параметр X с шагом h. Ввод исходных данных организовать через окна TEdit. Самостоятельно выбрать удобные параметры настройки.

 


Приложение 1

ПРиложенипе 1. Команды основного меню

  Команда Описание New Позволяет выбрать тип элемента из репозитория (архива, в котором хранятся заготовки…   В меню Edit расположены команды, осуществляющие операции редактирования, работы с областью обмена данными, отмены…

ПРиЛОЖЕНИЕ 2. Свойства компонентов

П2.1. Общие свойства компонентов

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

Свойство Align

  Значение Описание aINone Выравнивание не используется. Компонент располагается на том месте, куда был…  

Свойство Color

  Значение Цвет clBlack Черный (Black) cIMaroon Темно-красный (Maroon) cIGreen …   Цвета, приведенные в следующей таблице, являются системными цветами Windows и зависят от используемой цветовой…

Свойство Ctl3D

Позволяет задать вид компонента. Если значение этого свойства равно False, компонент имеет двумерный вид, если True — трехмерный (значение по умолчанию).

Свойство Cursor

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

Свойство DrogCursor

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

Свойство DrogMode

Позволяет определить режим поддержки протокола drag-and-drop. Возможны следующие значения:

 

Значение Описание
dmAutomatic Компонент можно «перетаскивать», «зацепив» мышью
dmManual Компонент не может быть «перетащен» без вызова метода BeginDrag

Свойство Enabled

Если это свойство имеет значение True, компонент реагирует на сообщения от мыши, клавиатуры и таймера. В противном случае (значение False) эти сообщения игнорируются.

Свойство Font

Многие визуальные компоненты используют шрифт по умолчанию. При создании компонента изначальное значение свойства Font (класс TFont) имеет следующие параметры:

 

Свойство Значение
Color clWindowText
Height - MulDiv(10, GetDeviceCaps(DC, LOGPIXELSY), 72)
Name System
Pitch FpDefault
Size
Style []

Свойство Height

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

Свойство HelpContext

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

Свойство Hint

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

Свойство Left

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

Свойство ParentColor

Это свойство позволяет указать, каким цветом будет отображаться компонент. Если значение этого свойства равно True, компонент использует цвет (значение свойства Color) родительского компонента. Если же значение свойства ParentColor равно False, компонент использует значение собственного свойства Color.

Свойство ParentCtl3D

Это свойство позволяет указать, каким образом компонент будет определять, является он трехмерным, или нет. Если значение этого свойства равно True, то вид компонента задается значением свойства Ctl3D его владельца, если же значение этого свойства равно False — то значением его собственного свойства Ctl3D.

Свойство ParentFont

Это свойство позволяет указать, каким образом компонент будет определять используемый им шрифт. Если значение этого свойства равно True, используется шрифт, заданный у владельца компонента, если же это значение равно False, то шрифт задается значением его собственного свойства Font.

Свойство PopupMenu

Это свойство задает название локального меню, которое будет отображаться при нажатии правой кнопки мыши. Локальное меню отображается только в случае, когда свойство AutoPopup имеет значение True или когда вызывается метод Popup.

Свойство TabOrder

Задает порядок получения компонентами фокуса при нажатии клавиши Tab. По умолчанию этот порядок определяется размещением компонентов в форме: первый компонент имеет значение этого свойства, равное 0, второй — 1 и т.д. Для изменения этого порядка необходимо изменить значение свойства TabOrder определенного компонента. TabOrder может использоваться только совместно со свойством Tab Stop.

Свойство TabStop

Это свойство позволяет указать, может компонент получать фокус или нет. Компонент получает фокус, если значение его свойства TabStop равно Тruе.

Свойство Tag

С помощью этого свойства можно «привязать» к любому компоненту значение типа Longlnt.

Свойство Тор

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

Свойство Visible

Это свойство позволяет определить, видим ли компонент на экране. Значением этого свойства управляют методы Show и Hide.

Свойство Width

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

П2.2. Компоненты страницы STANDARD

П2.2.1. TMainMenu

Каждый элемент меню является объектом класса TmenuItem и обладает следующими свойствами:   Property Break: TMenuBreak; Позволяет создать…  

П2.2.2. TPoupMenu

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

Редактируется локально меню так же, как и главное, с помощью конструктора меню.

Чтобы связать нажатие правой кнопки мыши с раскрытием вспомогательного меню, в свойство PoupMenu необходимо поместить имя компонента-меню.

Свойство Alignment задает местонахождение локального меню.

П2.2.3. TLabel

  Property AutoSize: Boolean; Указывает, будет ли метка изменять свои размеры в зависимости от помещенного в ее свойство…

П2.2.4. TEdit

  Property AutoSelect: Boolean; Указывает, будет ли выделяться весь текст в момент получения компонентом фокуса ввода …   Методы компонента:

П2.2.5. TMemo

Большинство свойств этого компонента аналогичны свойствам класса TEdit. Свойство Wordwrap аналогично свойству TLabei Wordwrap.   PropertyLines: TStrings; Содержит редактируемый текст.…

П2.2.6. TButton

  Property Cancel: Boolean;   Если имеет значение True, событие OnClick кнопки возникает при нажатии клавиши Esc …   В терминологии Windows модальными окнами называются такие специальные окна, которые, раз появившись на экране,…

П2.2.7. TCheckBox

  TLeftRight = (taLeftJustify, taRightJustify); PropertyAlignment: TLeftRight; Определяет положение текста: taLeftJustify…

П2.2.8. RadioButton

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

П2.2.9. TListBox

  Property Canvas: TCanvas; Канва для программной прорисовки элементов Property Columns: Longint; …

П2.2.10. TComboBox

Комбинированный список представляет собой комбинацию списка TListBox и редактора TEdit и поэтому большинство его свойств и методов заимствованы у этих компонентов.

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

Свойство DropDownCount определяет количество элементов списка, появление которых еще не приводит к необходимости прокрутки списка.

Свойство DroppedDown определяет, раскрыт ли список в данный момент.

П2.2.11. TScrollBar

  TSrollBarKind = (sbHorizontal, sbVertical); Property Kind: TScrollBarKind; Определяет ориентацию компонента: sbHorizontal -…

П2.2.12. TGroupBox

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

П2.2.13. TRadioGroup

Компонент класса TRadioGroup представляет собой специальный контейнер, предназначенный для размещения зависимых переключателей класса TRadioButton. Каждый размещаемый в нем переключатель помещается в специальный список Items и доступен по индексу, что упрощает обслуживание группы.

 

Property Columns: Integer; Определяет количество столбцов-переключателей
Property Itemlndex: Integer; Содержит индекс выбранного переключателя
Property Items: TStrings; Содержит список строк с заголовками элементов. Добавление (удаление) элементов достигается добавлением (удалением) строк списка Items

П2.2.14. TPanel

  Property BevelInner: TpanelBevel; Определяет стиль внутренней кромки Property BevelOuter: TpanelBevel; …  

П2.3. Компоненты страницы ADDITIONAL

П2.3.1. TBitBtn

Свойство Kind позволяет выбрать одну из 11 стандартных разновидностей кнопки (рис.П2.1.) Нажатие любой из кнопок, кроме bkCustom и bkHelp, закрывает модальное окно и возвращает в программу результат mrXXX:…

П2.3.2. TSpeedButton

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

П2.3.3. TMaskEdit

Шаблон состоит из трех частей, отделенных друг от друга символами «;». Первая часть задает маску ввода, вторая - это символ «О» или «I»,… Описатели полей ввода представлены в следующей таблице:   Символ Поле L должно содержать букву может содержать …

П2.3.4. TDrawGrid

  Property BorderStyle: TborderStyle; Определяет наличие или отсутствие внешней рамки таблицы Property Col:…   Элементы множества TGridOptions имеют следующий смысл:

П2.3.5. TStringGrid

В отличие от компонента TStringGrid может отображать только текстовую информацию.

 

Property Cells[ACol, ARow: Integer]: string; Определяет содержимое ячейки с табличными координатами (ACol.ARow)
Property Cols[Index: Integer]: TStrings; Содержит все строки колонки с индексом Index
Property Objects [ACol, ARow: Integer]: Tobject; Обеспечивает доступ к объекту, связанному с ячейкой (ACol,ARow)
Property Rows[Index: Integer]: Tstrings; Содержит все строки ряда с индексом Index

 

П2.3.6. TImage

Этот компонент служит для размещения на форме одного из трех поддерживаемых Delphi типов изображений: растровой картинки, пиктограммы или метафайла.

П2.3.7. TShape

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

П2.3.8. TBevel

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

П2.3.9. TScrollBox

Компонент является контейнером для размещения других компонентов и имеет возможность прокрутки.

П2.3.10. TCheckListBox

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

 

Property AllowQrayed: Boolean; Разрешает (запрещает) использовать в переключателях третье состояние cbGrayed
Property Checked[Index: Integer]: Boolean; Содержит выбор пользователя типа Да/Нет для переключателя с индексом Index. Состояния cbUnchecked и cbGrayed отражаются как False
Property Sorted: Boolean; Сортирует по алфавиту надписи на переключателях
Property State[Index: Integer]: TCheckBoxState; Содержит состояние переключателя с индексом Index: cbUncheeked; cbChecked; cbGrayed

П2.3.11. TSplitter

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

Property Beveled: Boolean; Управляет трехмерным изображением компонента. Если False, компонент виден как узкая полоска фона между разделяемыми им компонентами
NaturalNumber = 1..High(Integer) ; Property MinSize: NaturalNumber; Содержит минимальный размер любого из компонентов, которые разделяет TSplitter. Если выравнивание alLefi или alRight, минимальная ширина компонента - слева и справа от TSplitter, если alTop или alBottom, минимальная высота компонента - выше или ниже него

П2.3.12. TStaticText

Подобен компоненту Tlabel за исключением того, что, во-первых, он имеет Windows-окно и, во-вторых, в его свойстве BorderStyle: добавлено значение sbsSunken, которое создает иллюзию "вдавленности" компонента.

П2.3.13. Tchart

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

П2.4. Компоненты страницы DIALOGS

П2.4.1.Правила использования диалоговых панелей

Работа со стандартными диалоговыми окнами осуществляется в три этапа:

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

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

3. Использование введенных из диалогового окна данных (имя файла, настройки принтера и т.д.) для продолжения работы программы.

П2.4.2. TOpenDialog и TSaveDialog

Настройка диалога может варьироваться с помощью свойства TOpenOption = (of Readonly, ofOverwritePrompt, ofHideReadOnly, ofNoChangeDir, ofShowHelp, ofNoValidate, ofAllowMuItiSelect,

П2.4.3. TOpenPictureDialog и TSavePictureDialog

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

П2.4.4. TFontDialog

0,36 мм). Если свойства содержат 0, ограничения на размер шрифта отсутствуют.Свойство Options используется для настройки диалога. Значения этого…   fdAnsiOnly Показывает только шрифты с набором символов…

П2.4.5. TColorDialog

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

П2.4.6. TPrintDialog

  property Collate: Boolean;   Если имеет значение True, то окно показывается с выбранным переключателем “Разобрать”…

П2.4.7. TPrinterSetupDialog

Компонент создает окно настройки параметров принтера, вид которого зависит от типа принтера. Этот диалог взаимодействует с драйвером принтера и не возвращает в программу никакой информации, поэтому его метод Execute - процедура, а не функция.

П2.4.8. TFindDialog

  property FindText: string; Указывает образец для поиска property Left: Integer; Содержит горизонтальную…   Для компонента определен следующий тип, использующийся в свойстве Options: TfindOptions. Его значения имеют такой…

П2.4.9. TReplaceDialog

Компонент создает и обслуживает окно поиска и замены текстового фрагмента. Класс TReplaceDialog наследует большинство свойств классаTFind-Dialog. Дополнительно в компоненте определено свойство ReplaceText (тип String), в котором содержится текст замены, и событие OnReplace, которое возникает при нажатии кнопки “Заменить” или “Заменить все”.

Приложение 3

ПРИЛОЖЕНИЕ 3. Простые типы данных языка object Pascal

П3.1.Целые типы

  Название Длина, байт Диапазон значений Byte 0...255 Shortint …   К целочисленным типам применимы следующие процедуры и функции:

П3.2.Логические типы

К логическим относятся типы Boolean, ByteBool, Bool, WordBool и LongBool. В стандартном Паскале определен только тип Boolean, остальные логические типы введены в Object Pascal для совместимости с Windows: типы Boolean и ByteBool занимают по 1 байту каждый, Bool и WordBool - по 2 байта, LongBool - 4 байта. Значениями логического типа может быть одна из предварительно объявленных констант: False (ложь) или True (истина). Для них справедливы правила:

Ord(False) == 0;

Ord(True)<> 0;

Succ(False) = True;

Pred(True) = False.

 

П3.3.Символьный тип

Значением символьного типа является множество всех символов. Каждому символу приписывается целое число в диапазоне 0...255. Это число служит кодом внутреннего представления символа, его возвращает функция ord.

Для кодировки в Windows используется код. Первая половина символов ПК с кодами 0...127 постоянна и содержит в себе служебные коды и латинский алфавит. Вторая половина символов с кодами 128...255 меняется для различных шрифтов. Символы с кодами О... 31 относятся к служебным кодам. Если эти коды используются в символьном тексте программы, они считаются пробелами.

К типу Char применимы операции отношения, а также встроенные функции:

Chr (В) - функция типа Char, преобразует выражение В типа Byte в символ и возвращает его своим значением;

UpCase (СН) - функция типа Char, возвращает прописную букву, если СН - строчная латинская буква, в противном случае возвращает сам символ СН (для кириллицы возвращает исходный символ).

П3.4. Перечисляемый тип

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

Функции, поддерживающие работу с типами-диапазонами:

High (X) - возвращает максимальное значение типа-диапазона, к которому принадлежит переменная X;

Low (X) - возвращает минимальное значение типа-диапазона.

П3.5. Вещественные типы

  Название Длина, байт Кол-во значащих цифр Диапазон значений Примечание Real …   Для работы с вещественными типами имеются стандартные функции:

ПЗ.6. Тип дата-время

Тип дата - время определяется идентификатором TDateTime и предназначен для одновременного хранения и даты, и времени. Над данными типа TDateTime определены те же операции, что и над вещественными числами, а в выражениях этого типа могут участвовать константы и переменные целого и вещественного типов.

 

Приложение 4

ПРИЛОЖЕНИЕ 4. Процедуры и функции для работы со строками

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

 

Процедуры и функции для работы со строками
Function Concat(S1 [, S2, ..., SN]: String): String; Возвращает строку, представляющую собой сцепление строк-параметров S1. S2, … , SN
Function Copy(St: String; Index, Count: Integer): String; Копирует из строки St Count символов, начиная с символа с номером Index
Procedure Delete(St: String; Index, Count: Integers; Удаляет Count символов из строки St начиная с символа с номером Index
Procedure Insert(SubSt: String; St, Index: Integer) ; Вставляет подстроку SubSt в строку St начиная с символа с номером Index
Function Length(St: String): Integer; Возвращает текущую длину строки St
Function Pos(SubSt, St: String): Integer; Отыскивает в строке St первое вхождение подстроки SubSt и возвращает номер позиции, с которой она начинается. Если подстрока не найдена, возвращается ноль
Procedure SetLength(St: String; NewLength: Integer); Устанавливает новую (меньшую) длину NewLength строки St, если NewLength больше текущей длины строки, обращение к SetLength игнорируется
Подпрограммы преобразования строк в другие типы т
Function StrToCurr(St: String): Currency; Преобразует символы строки St в целое число типа Currency. Строка не должна содержать ведущих или ведомых пробелов
Function StrToDate(St: String): TDateTime; Преобразует символы строки St в дату. Строка должна содержать два или три числа, разделенных правильным для Windows разделителем даты (в русифицированной версии таким разделителем является «.») Первое число - день, второе – месяц, если указано третье число, оно задает год
Function StrToDateTime(St: String): TDateTime; Преобразует символы строки St в дату и время. Строка должна содержать дату и время, разделенные пробелом
Function StrToFloat(St: String): Extended; Преобразует символы строки St в вещественное число. Строка не должна содержать ведущих или ведомых пробелов
Function StrToInt(St: String): Integer; Преобразует символы строки St в целое число. Строка не должна содержать ведущих или ведомых пробелов
Function StrToIntDef(St: String; Default: Integer): Integer; Преобразует символы строки St в целое число. Если строка не содержит правильного представления целого числа, возвращается значение Default
Function StrToIntRange(St: String; Min, Max: Longint) : Longint; Преобразует символы строки St в целое число и возбуждает исключение ERangeError, если число выходит из заданного диапазона Mm Max
Function StrToTime(St: String): TDateTime; Преобразует символы строки St во время
Procedure Val(St: String; var X; Code: Integer); Преобразует строку символов St во внутреннее представление целой или вещественной переменной X, которое определяется типом этой переменной. Параметр Code содержит ноль, если преобразование прошло успешно, и тогда в Х помещается результат преобразования; в противном случае он содержит номер позиции в строке St, где обнаружен ошибочный символ, и в этом случае содержимое X не меняется. В строке St могут быть ведущие и (или) ведомые пробелы
Подпрограммы обратного преобразования
Function DateToStr(Value: TDateTime): String; Преобразует дату из параметра Value в строку символов
Function DateTimeToStr(Value: TDateTime): String; Преобразует дату и время из параметра Value в строку символов
Procedure DateTimeToString (var St: String; Format: String; Value: TDataTime) ; Преобразует дату и время из параметра Value в строку St
Function FormatDateTime (Format: String; Value: TDateTime): String; Преобразует дату и время из параметра Value в строку символов
Function FloatToStr( Value: Extended): String; Преобразует вещественное значение Value в строку символов
Function FloatToStrF(Value: Extended; Format: TFloatFor-mat; Precision, Digits: Integer) : String; Преобразует вещественное значение Value в строку символов с учетом параметров Precision и Digits (см. пояснения ниже)
Function FormatFloat(Format: String; Value: Extended): String; Преобразует вещественное значение Value в строку
Function IntToStr(Value: Integer) : String; Преобразует целое значение Value в строку символов
Function TimeToStr(Value: TDateTime): String; Преобразует время из параметра Value в строку символов
Procedure Str(X [:width [:Decimals]]; var St: String); Преобразует число Х любого вещественного или целого типа в строку символов St; параметры Width и Decimals, если они присутствуют, задают формат преобразования: Width определяет общую ширину поля, выделенного под соответствующее символьное представление вещественного или целого числа X, a Decimals –количество символов в дробной части (этот параметр имеет смысл только в том случае, когда Х - вещественное число)

 

Правила использования параметров функции FloatToStrF показаны ниже:

 

Значение Format Описание
fFfExponent Научная форма представления с множителем еХХ («умножить на 10 в степени XX»). Precision задает общее количество десятичных цифр мантиссы. Digits - количество цифр в десятичном порядке XX. Число округляется с учетом первой отбрасываемой цифры: 3.1416Е+00
ffFixed Формат с фиксированным положением разделителя целой и дробной частей. Precision задает общее количество десятичных цифр в представлении числа. Digits - количество цифр в дробной части. Число округляется с учетом первой отбрасываемой цифры: 3,14
ffGeneral Универсальный формат, использующий наиболее удобную для чтения форму представления вещественного числа. Соответствует формату ffFixed, если количество цифр в целой части меньше или равно Precision, а само число - больше или равно 0,00001, в противном случае соответствует формату ffExponent: 3,1416
ffNumber Отличается от ffFixed использованием символа - разделителя тысяч при выводе больших чисел (для русифицированной версии Windows таким разделителем является пробел). Для Value = p* 1000 получим 3 141,60
ffCurrency Денежный формат. Соответствует ffNumber, но в конце строки ставится символ денежной единицы (для русифицированной версии Windows - символы «р.»). Для Value = p*1000 получим: 3 141,60р

 


Приложение 5

ПРИЛОЖЕНИЕ 5. Математические формулы

Язык Object Pascal имеет ограниченное количество встроенных математических функций. Поэтому при необходимости использовать другие функции следует применять известные соотношения. В таблице приведены выражения наиболее часто встречающихся функций через встроенные функции языка Object Pascal.

 

Функция Соотношение Соотношение на языке Object Pascal
    Ln(x)/Ln(a)
Exp(a*Ln(x))
    Sin(x)/Cos(x)
    Cos(x)/Sin(x)
    ArcTan(Sqrt(x/(1-sqr(x))))
    Pi/2- ArcTan(Sqrt(x/(1-sqr(x))))
    Pi/2-ArcTan(x)
    (Exp(x)-Exp(-x))/2
    (Exp(x)+Exp(-x))/2
    1/Sin(x)
    1/Cos(x)

Литература

1. Фаронов В.В. DELPHI 3. Учебный курс. –М.: Нолидж, 1998. –400 с.

2. Дарахвелидзе П.Г., Марков Е.П. Delphi – среда визуального программирования: - СПб.: ВНV –Санкт-Петербург, 1996. – 352 с.

3. Федеоров А.Г. Delphi 3.0. для всех: - М.: КомпьютерПресс, 1998. – 544 с.


Св. план 1999, поз. 15 (вед.)

 

 

Учебное издание

 

 

Авторы Закалюкин Александр Борисович,

Колосов Станислав Васильевич,

Навроцкий Анатолий Александрович,

Синицын Анатолий Константинович,

Шакирин Анатолий Иванович

 

 

Программирование в среде DELPHI

 

Лабораторный практикум для студентов всех специальностей

 

Под общей редакцией А.К.Синицына

 

 

Редактор Т.А. Лейко

Корректор Е.Н. Батурчик

 

Подписано в печать Формат 68x84 1/16

Бумага Печать офсетная

Усл. печ. л. Уч. изд. л. 5,3. Тираж 500 экз.

ЗАКАЗ

 

 

 

Белорусский государственный университет информатики и радиоэлектроники

Отпечатано в БГУИР. Лицензия ЛП №156. 220027, Минск, П. Бровки, 6

– Конец работы –

Используемые теги: информатики, радиоэлектр0.057

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Информатики и радиоэлектроники

Что будем делать с полученным материалом:

Если этот материал оказался полезным для Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Еще рефераты, курсовые, дипломные работы на эту тему:

Лекции по курсу Информатика Лекция 1. Основные понятия и методы теории информатики и кодирования. Информатика как научная дисциплина. Понятие информации и информационных процессов
Лекция Основные понятия и методы теории информатики и кодирования... Информатика как научная дисциплина... Понятие информации и информационных процессов...

ЛЕКЦИЯ 1. 3 ПОНЯТИЕ ПРАВОВОЙ ИНФОРМАТИКИ И ЕЕ ПРЕДМЕТ. Правовая информатика как наука и учебная дисциплина. О месте правовой информатики в системе наук и правоведении. 14
ВВЕДЕНИЕ... ЛЕКЦИЯ... ПОНЯТИЕ ПРАВОВОЙ ИНФОРМАТИКИ И ЕЕ ПРЕДМЕТ Правовая информатика как наука и учебная дисциплина...

Лекции 1.ОСНОВНЫЕ ПОНЯТИЯ И КАТЕГОРИЯ ИНФОРМАТИКИ. 2 ЛЕКЦИИ 2. МАТЕМАТИЧЕСКИЕ ОСНОВЫ ИНФОРМАТИКИ. СИСТЕМЫ СЧИСЛЕНИЯ. 12 ЛЕКЦИЯ 3. АППАРАТНОЕ ОБЕСПЕЧЕНИЕ ЭВМ. 20 ЛЕКЦИЯ 4. ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ КОМПЬЮТЕРОВ.. 49 Широко распространён также англоязычный вар
gl ОГЛАВЛЕНИЕ... Лекции ОСНОВНЫЕ ПОНЯТИЯ И КАТЕГОРИЯ ИНФОРМАТИКИ... ЛЕКЦИИ МАТЕМАТИЧЕСКИЕ ОСНОВЫ ИНФОРМАТИКИ СИСТЕМЫ СЧИСЛЕНИЯ...

Объект и предмет информатики. Структура Информатики
Информатика делится на ряд разделов... Теоретическая информатика... Основная статья Теоретическая информатика...

Предмет и основные понятия информатики Предмет информатики как науки составляют: -аппаратное обеспечение средств вычислительной техники
Информатика это комплексная техническая наука которая систематизирует... Термин информатика происходит от французского слова Informatique и образован из двух слов информация и автоматика...

ЛЕКЦИИ ПО КУРСУ ИНФОРМАТИКА Лекция 1. Введение. История информатики. Измерение
Лекция... Введение История информатики Измерение...

Тема урока: Информация и её виды. Что изучает информатика? Техника безопасности в компьютерном классе Урок информатики в 10 классе 1 Из материалов сайта
Урок информатики в классе... Из материалов сайта Скородянской средней школы Губкинского района... Цель урока Познакомить учащихся с новым предметом Изучить понятие информации Воспитание умения слушать учителя...

КУРС ЛЕКЦИЙ по дисциплине Информатика Лекция 1 1. Введение в информатику
Федеральное агентство по образованию... Государственное образовательное учреждение... высшего профессионального образования...

Рассматривается история развития информатики и излагается предмет информатики
Ключевые слова advanced brainware CD RW DARPA edu gov hardware Internet MAX net org science true Windows автомат база данных вектора... Хотя информатика и считается достаточно молодой наукой по отношению ко многим... При рассмотрении вопроса об истории информатики будем исходить из первых признаков и событий информационного обмена...

ИНФОРМАТИКИ И РАДИОЭЛЕКТРОНИКИ
Министерство образования Республики Беларусь... Учреждение образования БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ...

0.037
Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • По категориям
  • По работам