
- •4.Вычислить значения выражений:
- •7.Вычислить значения выражений:
- •8.Записать на Паскале выражение, истинное при выполнении указанного условия и ложное в противном случае:
- •9. Вычислить значения выражений:
- •10. Вычислить значения выражений: ,
- •Задание: Создать собственный объект и использовать его в программе.
- •Задание: Создать собственный объект с помощью конструкторов и деструкторов и использовать его в программе.
- •Как создать объект с помощью конструктора?
- •Как удалить объект с помощью деструктора?
- •Выполнение индивидуального задания
- •Задания:
- •Вариант №1
- •Какие свойства компонента Memo вы знаете?
- •1.Дано двузначное число. Определить: а) входит ли в него цифра 3;
Выполнение индивидуального задания
Ниже приведено 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.845
u=-55.6848.
3.
При
x=3.74
,
y=-0.825, z=0.16
,
v=1.0553.
4.
При
x=0.4
,y=-0.875, z=-0.475
w=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.466 c=4.025.
13.
.
При
x=17.421, y=10.365
,
z=0.828
f=0.33056.
14.
.
При
x=12.3
,
y=15.4, z=0.252
g=82.8257.
15.
.
При
x=2.444, y=0.869
,
z=-0.13
-0.49871.
Лабораторная работа №14 Использование компонентов отображения.
Цель лабораторной работы: Ознакомить студентов с компонентами отображения. Научиться составлять каркас простейшей программы в среде DELPHI. Закрепить полученные на лекции знания. Написать и отладить программу.
Теория:
Компоненты класса TLabel (метки) предназначены для размещения на форме различного рода текстовых надписей. Вы можете изменить шрифт и цвет метки, если дважды щелкнете на свойство Font в Инспекторе Объектов. Вы увидите, что это легко сделать и во время выполнения программы, написав всего одну строчку кода.
Property AutoSize: Boolean; |
Указывает, будет ли метка изменять свои размеры в зависимости от помещенного в ее свойство Caption текста (True - будет) |
Property FocusControl: TWinControl; |
Содержит имя оконного компонента, который связан с меткой (выбор компонента Label приводит к перемещению фокуса на связанный с ним компонент) |
TtextLayout = (tlTop, tlCenter, tlBottom) ;
Property Layout: TTextLayout; |
Определяет выравнивание текста по вертикали относительно границ метки: tlTop - текст располагается вверху; tlCenter - текст центрируется по вертикали; tlBottom -текст располагается внизу |
Property ShowAccelChar: Boolean; |
Если содержит True, символ & в тексте метки предшествует символу-акселератору |
Property Transparent: Boolean; |
Определяет прозрачность фона метки. Если False, фон закрашивается собственным цветом Color, в противном случае используется фон родительского компонента |
Property WordWrap: Boolean; |
Разрешает/запрещает разрыв строки на границе слова. Для вывода многострочных надписей задайте AuroSize=False, WordWrap=True и установите подходящие размеры метки |
TEdit
Компонент класса TEdit представляет собой однострочный редактор текста. С его помощью можно вводить и/или отображать достаточно длинные текстовые строки. Следует помнить, что этот компонент не распознает символы конца строки (#13#10).
Property AutoSelect: Boolean; |
Указывает, будет ли выделяться весь текст в момент получения компонентом фокуса ввода |
Property AutoSize: Boolean; |
Если True и BorderStyle = bsSingle, высота компонента автоматически меняется при изменении свойства Font. Size |
TBorderStyle = bsNone..bsSingle; Property BorderStyle: TBorderStyle; |
Определяет стиль обрамления компонента: bsNone - нет обрамления; bsSingle – компонент обрамляется одной линией |
TEditCharCase = (ecNormal, ecUpperCase, ecLowerCase);
Property CharCase: TEditCharCase; |
Определяет автоматическое преобразование высоты букв: ecNormal - нет преобразования; ее UpperCase - все буквы заглавные; ecLowerCase -все буквы строчные. Правильно работает с кириллицей |
Property HideSelection: Boolean; |
Если False, выделение текста сохраняется при потере фокуса ввода |
Property MaxLength: Integer; |
Определяет максимальную длину текстовой строки. Если имеет значение 0, длина строки не ограничена |
Property Modified: Boolean; |
Содержит True, если текст был изменен |
Property OnChange: TNotifyEvent; |
Определяет обработчик события OnChange, которое возникает после любого изменения текста |
Property OEMConvert: Boolean; |
Содержит True, если необходимо перекодировать текст из кодировки MS-DOS в кодировку Windows и обратно |
Property PasswordChar: Char; |
Если символ PasswordChar определен, он заменяет собой любой символ текста при отображении в окне. Используется для ввода паролей |
Property ReadOnly: Boolean; |
Если содержит True, текст не может изменяться |
Property SelLength: Integer; |
Содержит длину выделенной части текста |
Property SelStart: Integer; |
Содержит номер первого символа выделенной части текста |
Property SelText: String; |
Содержит выделенный текст |
Методы компонента:
procedure Clear; |
Удаляет весь текст |
procedure ClearSelection; |
Удаляет выделенный текст |
procedure CopyToClipboard; |
Копирует выделенный текст в Clipboard |
procedure CutToClipboard; |
Копирует выделенный текст в Clipboard, после чего удаляет выделенный текст из компонента |
function GetSelTextBuf(Buffer: PChar; BufSize: Integer) : Integer; |
Копирует не более BufSize символов выделенного текста в буфер Buffer |
procedure PasteFromClipboard; |
Заменяет выделенный текст содержимым Clipboard, а если нет выделенного текста, копирует содержимое Clipboard в позицию текстового курсора |
procedure SelectAll; |
Выделяет весь текст |
Procedure SetSelTextBuf(Buffer: PChar); |
Заменяет выделенный текст содержимым Buffer, а если нет выделенного текста, копирует содержимое Buffer в позицию текстового курсора |
Задание : Установить все используемые свойства в приложении программным путем.
Вариант №1
Определить что, все цифры данного четырехугольника числа N различны;
Вариант №2
Определить что, данные числа x,y являются координатами точки, лежащей в первой координатной четверти;
Вариант №3
Определить что, цифры данного трехзначного числа N являются членами арифметической прогрессии;
Вариант №4
Определить что, сумма двух действительных чисел a и b являются целым числом, т.е. дробная часть суммы равна нулю;
Вариант №5
Определить что, данное натуральное число a кратно числу b, но не кратно числу с.
Вариант №6
Определить что, данное четырехзначное число читается одинаково слева направо и справа налево;
Вариант №7
Составить программу, которая проверяла бы, не приводит ли суммирование двух целых чисел А и В к переполнению (т.е. к результату большему, чем 32767). Если будет переполнение, то сообщить об этом, иначе вывести сумму этих чисел.
Вариант №8
Определить что, число С является средним арифметическим чисел а и b;
Вариант №9
Программа – льстец. На экране появляется вопрос «Кто ты: мальчик или девочка? Введи Д или М». В зависимости от ответа на экране должен появиться текст «мне нравятся девочки!» или «Мне нравятся мальчики!».
Вариант №10
Проверить, является ли четырехугольник со сторонами a,b,c,d ромбом.
Вариант №11
Определить, является ли треугольник со сторонами a,b,c равнобедренными.
Вариант №12
Составить программу, определяющую результат гадания на ромашке – «любит – не любит», взяв за исходное данное количество лепестков п.
Вариант №13
Определить что, данные числа C и D являются соответственно квадратом и кубом числа а;
Вариант №14
Определить, является ли треугольник со сторонами A,B,C равносторонним.
Вариант №15
Среди чисел A,В,С определить количество отрицательных.
Контрольные вопросы:
Основные составные части Delphi?
Какие функции преобразования вы знаете?
Какие компоненты служат для ввода и вывода данных?
Какие типы свойств существуют?
Как изменить значение свойства компонента программно?
Лабораторная работа №15 Использование компонентов редактирования.
Цель работы: Применение теоретических навыков на практике. Ознакомить студентов с компонентами ввода-вывода. Закрепить полученные на лекции знания. Написать и отладить программу.
Теория:
TEdit - стандартный управляющий элемент Windows для ввода. Он может быть использован для отображения короткого фрагмента текста и позволяет пользователю вводить текст во время выполнения программы.
TButton позволяет выполнить какие-либо действия при нажатии кнопки во время выполнения программы. В Delphi все делается очень просто. Поместив TButton на форму, Вы по двойному щелчку можете создать заготовку обработчика события нажатия кнопки. Далее нужно заполнить заготовку кодом.
Функции преобразования:
IntToStr |
Перевод целого числа в строковое |
StrToInt |
Наоборот |
FloatToStr |
Перевод вещественного числа в строку |
StrToFloat |
Наоборот |
TMaskEdit
Специализированный редактор TMaskEdit предназначен для ввода текста, соответствующего некоторому шаблону, задаваемому свойством EditMask:String. Если это свойство не задано, TMaskEdit работает как обычный редактор TEdit.
Шаблон состоит из трех частей, отделенных друг от друга символами «;». Первая часть задает маску ввода, вторая - это символ «О» или «I», определяющий, записывается ли в Text результат наложения маски или исходный текст («О» - исходный текст). В третьей части указывается символ, который в окне редактора будет стоять в полях, предназначенных для ввода символов.
Описатели полей ввода представлены в следующей таблице:
Символ |
Поле |
L |
должно содержать букву |
1 |
может содержать букву |
А |
должно содержать букву или цифру |
а |
может содержать букву или цифру |
С |
должно содержать любой символ |
с |
может содержать любой символ |
О |
должно содержать цифру |
9 |
может содержать цифру |
# |
может содержать цифру, «+», «-» |
Специальные символы:
Символ |
Значение |
\ |
Следующий символ - литерал. Позволяет вставить в маску литералы из символов описателей полей ввода и специальных символов |
|
На это место вставляется символ-разделитель Windows для часов, минут, секунд |
/ |
На это место вставляется символ-разделитель Windows для полей даты. |
/ |
Разделитель частей шаблона |
! |
Подавляет все ведущие пробелы |
> |
Все следующие за ним поля ввода преобразуют буквы к заглавным |
< |
Все следующие за ним поля ввода преобразуют буквы к строчным |
о |
Отменяет преобразование букв |
Пример: Найти сумму 2 чисел – целого и вещественного.
Загрузить Delphi (ПУСК -> Программы -> BorlandDelphi6 -> Delphi6
Открыть новое приложение File| New|Application , если новое приложение не создалось
Перенесите на пустую форму, кнопку TButton со страницы Standard палитры компонент. Затем щелкните курсором мыши в нужном месте формы. На форме появится кнопка, Delphi присвоит имя по умолчанию – Button1.
Так же перенесите 2 компоненты TEdit, 4 - TLabel.
Выделите на форме компонент Button1 – кнопку. Перейдите в Инспектор Объектов и измените свойство Caption (надпись), которое по умолчанию равно Button1 на «Выполнить»
А
налогично измените свойство Caption у компонет Label на : Label1 >> «Число1» , Label2 >> «Число 2», Label3 >> «Результат», а у компоненты Labe4 свойство Caption удалить.
Удалите в Edit1 и в Edit2 значение в свойстве Text.
Расположите компоненты как на рисунке
Теперь необходимо написать обработчик события при нажатии кнопки. Нажмите 2 раза на кнопке, появится редактор кода программы, напишите следующее не удаляя все. что за вас написал Delphi:
procedure TForm1.Button1Click(Sender: TObject);
var a :integer;
b,c :real;
begin
a:= StrToInt(Edit1.text); {ввод числа из компонеты Edit}
b:=StrToFloat (Edit2.Text); {и перевод из строки в число}
c:=a+b;
Label4.Caption:=FloatToStr(c); {вывод результата в Label4}
end;
Запустите приложение Run | Run F9
Введите числа в поля «Число 1» и «Число 2», а затем нажмите кнопку «Выполнить».
Для завершения приложения нажмите «Х» на заголовке формы.
Сохраните приложение File| Save Project as , создайте свою папку и нажмите «Сохранить»
Свойство является важным атрибутом компонента. Свойства служат двум главным целям. Во-первых, они определяют внешний вид формы или компонента. А во-вторых, свойства определяют поведение формы или компонента.
Существует несколько типов свойств, в зависимости от их “природы”, т.е. внутреннего устройства.
Простые свойства - это те, значения которых являются числами или строками. Например, свойства Left и Top принимают целые значения, определяющие положение левого верхнего угла компонента или формы. Свойства Caption и Name представляют собой строки и определяют заголовок и имя компонента или формы.
Перечислимые свойства - это те, которые могут принимать значения из предопределенного набора (списка). Простейший пример - это свойство типа Boolean, которое может принимать значения True или False.
Вложенные свойства - это те, которые поддерживают вложенные значения (или объекты). Object Inspector изображает знак “+” слева от названия таких свойств. Имеется два вида таких свойств: множества и комбинированные значения. Object Inspector изображает множества в квадратных скобках. Если множество пусто, оно отображается как []. Установки для вложенных свойств вида “множество” обычно имеют значения типа Boolean. Наиболее распространенным примером такого свойства является свойство Style с вложенным множеством булевых значений. Комбинированные значения отображаются в Инспекторе Объектов как коллекция некоторых величин, каждый со своим типом данных. Некоторые свойства, например, Font, для изменения своих значений имеют возможность вызвать диалоговое окно. Для этого достаточно щелкнуть маленькую кнопку с тремя точками в правой части строки Инспектора Объектов, показывающей данное свойство.
Задание :
Вариант №1
Составить программу, которая проверяла бы, не приводит ли суммирование двух целых чисел А и В к переполнению (т.е. к результату большему, чем 32767). Если будет переполнение, то сообщить об этом, иначе вывести сумму этих чисел.
Вариант №2
Определить что, число С является средним арифметическим чисел а и b;
Вариант №3
Программа – льстец. На экране появляется вопрос «Кто ты: мальчик или девочка? Введи Д или М». В зависимости от ответа на экране должен появиться текст «мне нравятся девочки!» или «Мне нравятся мальчики!».
Вариант №4
Проверить, является ли четырехугольник со сторонами a,b,c,d ромбом.
Вариант №5
Определить, является ли треугольник со сторонами a,b,c равнобедренными.
Вариант №6
Составить программу, определяющую результат гадания на ромашке – «любит – не любит», взяв за исходное данное количество лепестков п.
Вариант №7
Определить что, данные числа C и D являются соответственно квадратом и кубом числа а;
Вариант №8
Определить, является ли треугольник со сторонами A,B,C равносторонним.
Вариант №9
Среди чисел A,В,С определить количество отрицательных.
Вариант №10
Определить что, все цифры данного четырехугольника числа N различны;
Вариант №11
Определить что, данные числа x,y являются координатами точки, лежащей в первой координатной четверти;
Вариант №12
Определить что, цифры данного трехзначного числа N являются членами арифметической прогрессии;
Вариант №13
Определить что, сумма двух действительных чисел a и b являются целым числом, т.е. дробная часть суммы равна нулю;
Вариант №14
Определить что, данное натуральное число a кратно числу b, но не кратно числу с.
Вариант №15
Определить что, данное четырехзначное число читается одинаково слева направо и справа налево;
Контрольные вопросы:
Основные составные части Delphi?
Какие функции преобразования вы знаете?
Какие компоненты служат для ввода и вывода данных?
Какие типы свойств существуют?
Как изменить значение свойства компонента программно?
Лабораторная работа №16 Использование компонентов многострочного редактора для обработки строковых данных.
Цель работы: Применение теоретических навыков на практике. Ознакомить студентов с компонентами ввода/вывода строк на форме приложения с использованием окна Watch. Закрепить полученные на лекции знания. Написать и отладить программу
Теория:
Окно наблюдения (View| Debug Windows| Watch). Ctrl+F5 на переменной – откроется окно наблюдения и в нем появится имя переменной и ее значение или выделить курсором выражение (Ctrl+F5) и в окне наблюдения значение этого выражения.
Существует ряд стандартных функций и процедур для работы со строками.
Функция Length(s) выдает длину строки s.
Функция Concat(s1,s2,..,sn) возвращает строку s1+s2+..+sn.
Функция Copy(s,p,k) возвращает фрагмент строки s, который начинается в позиции p и имеет длину k.
Функция Pos(s1,s) ищет первое вхождение подстроки s1 в строку s и возвращает номер первого символа s1 в строке s или 0 если не нашли.
Процедура Delete(s,p,k) удаляет из строки s фрагмент, который начинается в позиции p и имеет длину k.
Процедура Insert(s,s1,p) вставляет в строку s подстроку s1, начиная с заданной позиции p.
Турбо паскаль позволяет производить преобразования числовых значений в строковые и наоборот. Для этого используются процедуры Str(X:n:d,S) и Val(S,X,e). Первая получает их числа X строку S с изображением этого числа, в которой не менее n символов и из них d знаков после запятой. Параметры n и d необязательные. Вторая процедура получает из строки S число X. При успешном результате e=0.
Пример: Заменить в строке «А» на «О».
Переместить на форму компоненты : 2 Edit, Label, Button1 и измените значения их свойств.
Расположите компоненты как показано на рисунке и при 2 нажатии на кнопке введите текст программы:
p
rocedure
TForm1.Button1Click(Sender: TObject);
var s1 :string;
i : integer;
begin
s1:= Edit1.text; {ввод строки в переменную s1}
for i:=0 to length(s1) do
begin
if s1[i]='А' then
begin
delete (s1 , i , 1);
insert('О' , s1 , i);
end;
end;
Edit2.Text:=s1; {вывод новой строки}
end;
Задания: Используя компоненту Edit, выполнить следующие действия:
Вариант №1
Ввести последовательность символов, предшествующую символу "пробел" и выяснить: есть ли среди них буква А, сколько раз встретился символ "." , заменить букву В на *
Вариант №2
Ввести произвольную последовательность из 20 символов и выяснить, - сколько среди них точек, сколько среди них пробелов, сколько среди них букв Д.
Вариант №3
Ввести произвольную последовательность символов, предшествующую символу и выяснить, есть ли среди них буквы, входящие в слово КУРС и сколько раз какая из этих букв встретилась.
Вариант №4
Ввести последовательность символов, предшествующих точке и выяснить, встретились ли среди них буквы, входящие в слово ТУР
Вариант №5
Ввести последовательность символов, заканчивающихся * выяснить: сколько пробелов, сколько букв А, сколько букв С, все буквы А заменить на точку
Вариант №6
Ввести произвольную последовательность символов, предшествующих точке и выяснить, есть ли среди них буквы, входящие в слово ЭВМ и сколько раз они встречались.
Вариант №7
Ввести последовательность символов, предшествующих символу и выяснить сколько среди них букв S, A, R. Все буквы S заменить на точку
Вариант №8
Ввести произвольную последовательность символов, предшествующую символу ““ и определить: сколько символов введено, есть ли среди них символ пробел, все встретившиеся буквы “A“ заменить символом ““.
Вариант №9
Вывести произвольную последовательность из 15 символов и определить, есть ли среди них буквы, входящие в слово «Мера». Если они найдены, заменить их символом пробел.
Вариант №10
Ввести строку символов, состоящую из N слов, разделённых пробелом и определить, сколько слов введено, кроме того, вывести все слова отдельно «столбцом».
Вариант №11
Ввести произвольную последовательность из 30 символов и определить, есть ли среди них буквы входящие в слово “ШИНА” и сколько среди символов пробелов
Вариант №12
Ввести последовательность символов, предшествующую символу "пробел" и выяснить: есть ли среди них буква Н, сколько раз встретился символ «=» , заменить букву «Н» на «?»
Вариант №13
Ввести произвольную последовательность из 20 символов и выяснить, - сколько среди них точек, сколько среди них пробелов, сколько среди них букв Ш.
Вариант №14
Ввести последовательность символов, предшествующих точке и выяснить, встретились ли среди них буквы, входящие в слово МИР
Вариант №15
Ввести последовательность символов, предшествующих символу « - » и выяснить сколько среди них букв Н, Ю, Х. Все буквы Ю заменить на точку
Контрольные вопросы:
Какие функции над строками вы знаете?
Как произвести ввод и вывод строки в приложении?
Какие компоненты необходимы для работы со строками?
Лабораторная работа №17 Использование компонентов многострочного редактора для одномерных массивов.
Цель работы: Применение теоретических навыков на практике. Ознакомить студентов с компонентами вывода текста на форме приложения. Закрепить полученные на лекции знания. Написать и отладить программу
Теория:
TMemo - иная форма TEdit. Подразумевает работу с большими текстами. TMemo может переносить слова, сохранять в Clipboard фрагменты текста и восстанавливать их, и другие основные функции редактора. TMemo имеет ограничения на объем текста в 32Кб, это составляет 10-20 страниц. (Есть VBX и “родные” компоненты Delphi, где этот предел снят).
Пример: Найти сумму 5 чисел в одномерном массиве.
Разместите не форме компоненты Memo1, 2 - Label, Button, Edit, как на рисунке. В свойстве Memo Lines| TString… удалить текст «Memo1» и «OK».
procedure
TForm1.Button1Click(Sender: TObject);
var a: array [0..9] of integer;
sum, i:integer;
begin
sum:=0;
for i:=0 to 4 do
begin
a[i]:=StrToInt(Memo1.Lines[i]);
sum:=sum+a[i];
end;
Edit1.Text:=IntToStr(sum);
end;
Вводите все значения в Memo1 !!!!
Задания: