Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ekzam_voprosy (1).doc
Скачиваний:
12
Добавлен:
21.04.2019
Размер:
1.92 Mб
Скачать

ПИ 10

Высокоуровневые методы информатики и программирования

Экзаменационные вопросы

Специальность: «Прикладная информатика в экономике»

III семестр

1. Основные понятия объектно – ориентированного программирования (абстрагирование, инкапсуляция, наследование, полиморфизм, составляющие класса: поля, методы, свойства, объявление класса)

Абстракция 

Абстрагирование — это способ выделить набор значимых характеристик объекта, исключая из рассмотрения незначимые. Соответственно, абстракция — это набор всех таких характеристик.

Инкапсуляция 

Инкапсуляция — это свойство системы, позволяющее объединить данные и методы, работающие с ними, в классе и скрыть детали реализации от пользователя.

Класс 

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

Наследование 

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

Объект 

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

Полиморфизм 

Полиморфизм — это свойство системы использовать объекты с одинаковым интерфейсом без информации о типе и внутренней структуре объекта.

По́ле кла́сса или атрибу́т (переменная-член, data member, class field, instance variable) в объектно-ориентированном программировании — переменная, связанная с классом или объектом. Все данные объекта хранятся в его полях. Доступ к полям осуществляется по их имени. Обычно тип данных каждого поля задаётся в описании класса, членом которого является поле.

Свойства представляют собой атрибуты, которые составляют индивидуальность объекта и помогают описать его. Например, обычная кнопка в окне приложения обладает такими свойствами, как цвет, размеры, положение. Для экземпляра класса "кнопка" значения этих атрибутов задаются при помощи свойств - специальных переменных, определяемых ключевым словом property. Цвет может задаваться свойством Color, размеры - свойствами Width и Height и т. д. 

Класс - это тип. Этот производный тип вводится в программу с помощью специального оператора объявления класса. В объявлении класса используется ранее описанный инструментальный набор средств для построения и преобразования производных типов.

2. Интегрированная среда разработки Borland Delphi: интерфейс среды, этапы разработки проекта, структура проекта (файлы проекта), компиляция и выполнение проекта.

  1. главное окно (Delphi 7 - Project 1);

  2. окно редактора свойств объектов (Object Inspector);

  3. окно формы (Form 1);

  4. окно редактора кода (Unit1.pas);

  5. окно дерева объектов (Object TreeView).

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

Спецификация.

Разработка алгоритма.

Кодирование (запись алгоритма на языке програмирования)

Отладка.

Тестирование.

Создание справочной системы.

Создание установочного диска (CD – ROM).

Спецификация

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

Разработка алгоритма.

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

Кодирование.

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

Отладка.

Отладка – это процес поиска и устранения ошибок. Ошибки в программе делятся на два типа : синтаксические и алгоритмические. Синтаксические ошибки устраняются легко, а алгоритмические обнаружить труднее. Этап отладки считается законченным, если программа правильно работает и выдаёт правильный результат.

Тестирование.

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

Создание справочной системы.

Если вы (разработчик) предполагаете, что вашей программой на Delphi будут пользоваться другие, то она обязательно должна иметь справочную информацию и обеспечивать пользователю удобный доступ к справочной информации во время работы программы.В современных программах справочная информация представляется в форме CHM или HLP файлов. Программа кроме справочной информации должна содержать информацию по установке программы, которую оформляют в виде текстового файла в одном из форматов: txt, doc, htm.

Создание установочного диска.

Установочный диск CD – ROM создаютсядля того, чтобы пользователь мог самостоятельно, без помощи разработчика, установить программу на свой компьютор написанную на языке Delphi. По мимо установочной программы на диске находятся файлы справки и инструкции по установки программы(текстовый

Структура проекта Delphi

Программа Delphi-это несколько связанных между собой файлов. Главный файл проекта, изначально называется PROJECT1.DPR. Если необходимо переименовать название проекта, нужно перезаписать этот файл, выбрав в меню File команду Save Project As… При задании имени следует придерживаться правил задания имен в Object Pascal. Имя не должно содержать пробелов (используйте в таком случае знак подчеркивания), должно начинаться с буквы (цифры допустимы, но со второй позиции), не должно содержать других символов, кроме букв и цифр. Под каким именем вы сохраняете проект, под таким именем и будет создаваться исполняемый EXE файл, который вы всегда сможете самостоятельно переименовать.

Модуль программы, который автоматически появляется в начале работы Unit1.  Файл называется UNIT1.PAS по умолчанию, но его можно назвать любым другим именем, вроде MAIN.PAS.  Это делается аналогично переименованию названия проекта. Необходимо выбрать в меню File команду Save As…  Сохраняется активный модуль в редакторе кода.  Файл главной формы, который по умолчанию называется UNIT1.DFM, используется для сохранения информации о внешнем виде формы (окна разрабатываемого приложения). При переименовании названия модуля автоматически меняет свое название. Файл PROJECT1.RES изначально содержит иконку для проекта. Создается автоматически. Имеет одноименное название с названием проекта. Файл PROJECT1.DSK содержит информацию о состоянии рабочего пространства. Состояние окон во время разработки приложения. Исполняемый EXE файл, который создается в процессе компиляции проекта. Разумеется, если сохранить проект под другим именем, то изменят название и файлы с расширением RES и DSK.  После компиляции программы получаются файлы с расширениями:DCU - скомпилированные модули PAS для последующей быстрой компиляции некоторые файлы не перезаписываются  EXE - исполняемый файл  ~PA, ~DP - backup файлы редактора. Автоматически создаются и содержат информацию, перед последним сохранением.

И так, любая программа всегда состоит из уже знакомого нам файла проекта(такой файл имеет расширение .dpr) и одного или нескольких модулей(файлы с расширением .pas) Файл проекта не предназначен для редактирования пользователем и создаётся автоматически самой системой программирования Delphi.  Для того, чтобы увидеть содержимое файла проекта, необходимо выполнить команду Project|View Source.Содержимое файла проекта может быть,например,следующим: Program Project1; usesForms,Unit in 'Unit1.pas'{Form}; {$R *.RES}beginApplication.Initialize; Application.CreateForm(Tform1,Form1); Application.Run; End. Файл проекта(главный модуль) начинается словом program,за которым следует имя программы,совпадающее с именем проекта. Далее за словом uses следуют имена используемых модулей:стандартного модуля Forms и модуля формы Unit1. Похожая на комментарий директива {$R *.RES} указывает компилятору,что нужно использовать файл ресурсов,который содержит описание ресурсов приложения,например,пиктограммы.Звездочка указывает,что имя файла ресурсов такое же,как и у файла проекта,но с раширением .res. Исполняемая часть главного модуля находится между операторными скобками begin…end.Операторы исполняемой части обеспечивают инициализацию приложения и вывод на экран стартового окна.Помимо главного модуля каждая программа включает как минимум один модуль формы,который содержит описание стартовой формы приложения и поддерживающих ее работу процедур.В Delphi каждой форме соответствует свой модуль.Для переключения между формой и окном редактора кода,содержащего соответствующий модуль,следует нажать на клавишу F12.Модули-это программные единицы,служащие для размещения фрагментов программ.При помощи содержащихся в них текстов программ и реализуется решаемая пользователем задача.

Компиляция и выполнение =(

3. Структура проекта Delphi.

См. 2

4. Визуальные компоненты для отображения, ввода и редактирования текста (Label, Edit, Memo, EditMask, RichEdit). Свойства, методы, события, особенности. Примеры использования.

ЛАБЕЛ

 Delphi компонент Label предназначен для отображения статического текста, то есть надписей и меток на Форме, которые не меняются в течение всего времени работы программы. Конечно, текст надписи, отображаемый компонентом Label можно изменить, но не непосредственно, а только программно.    Свойством компонента Label, которое используется для задания отображаемого текста, является Caption (Заголовок англ.). Вот типичные способы использования этого Delphi компонента:

Способ использования

Вид Формы

Комментарий

 Метка (пояснительный текст)  на  Форме

 Размещённый  на  Форме  Компонент Label  указывает  пользователю,  что  именно  он  должен  ввести  в  поле  ввода.  Для  этого  достаточно  в  Инспекторе  объектов  в  свойстве  Caption  ввести  нужный  текст.

 Вывод результатов работы  программы

 Пользователь  вводит  слагаемые,  программа  рассчитывает  результат  и  выводит  его  в  компонент  Label.  Вот  обработчик:  Label1.Caption:=IntToStr(Edit1.Text)+IntToStr(Edit2.Text);

   Хотя считается, что компонент Delphi Label предназначен для отображения именно однострочного текста, это не совсем верно.Свойство WordWrap компонента Label позволяет выводить текст в несколько строк.

Устанавливаем свойство WordWrap в True и смотрим на результат. Как видим, в этом случае происходит автоматический переход на новую строку слова, не помещающегося на текущую строку. Очевидно, если растянуть компонент Label на всю Форму, он способен отобразить достаточно большой текст. Так как свойство Captionкомпонента Label имеет тип String, то размер текста может достигать 2 Гбайт!

   Свойство Font компонента Label предоставляет возможности по изменению шрифта выводимого текста. При переходе на строкуFont в Инспекторе объектов появляется кнопочка, предоставляющая доступ к диалоговому окну выбора шрифта, такому же, с каким мы встречаемся работая, например, в Worde. Плюсик слева на строке Font раскрывает атрибуты шрифта для установки прямо в Инспекторе объектов:

   В комментариях возник вопрос, как отобразить с помощью метки только текст. Дело в том, что метка - это и текст, и проямоугольник фона. Так вот, как сделать так, чтобы был виден только текст, а фон не был заметен? Если фон метки совпадает по цвету с компонентом, на который она установлена, то фон метки незаметен. А если нужно разместить метку на цветной картинке (компонентImage)?    Как раз для этого существует свойство Transparent. Установленное в True, оно делает фон метки прозрачным, и на рисунке будет виден только текст.

ЭДИТ

Компонент Delphi Edit представляет собой однострочное текстовое поле, служащее для ввода данных пользователем. Основным свойством компонента Delphi Edit, передающим введённую информацию, является свойство Edit1.Text типа String. При изучении работы с Delphi Edit советую посетить страничку работа со строками Delphi, так как там описываются функции Delphi для работы с данными, представленными в текстовой форме. Например,чаще всего, судя по поисковым запросам, посетители хотят знать, как работать с числами, введёнными в компонент Edit: с целыми   X:=StrToInt(Edit1.Text); с дробными X:=FloatToStr(Edit1.Text);

   

Можно вводить информацию с клавиатуры, присваивать в программе и считывать в переменную типа String: var S: String; begin   Edit1.Text:='Присваиваем текст';   S:=Edit1.Text; end; Также при конструировании элементов Формы текст, вводимый в Инспектор объектов, сразу же появляется в компоненте Delphi Edit.

   В отличие от компонента Delphi Label, который автоматически подстраивает свою длину под размер текста в свойствеCaption, вводимый в компонент Delphi Edit текст никак не влияет на длину (свойство Width) этого компонента. Не помещающаяся в установленную длину часть текста сдвигается вправо или влево за границы компонента:

begin   Edit1.Text:='Текст, не помещающийся в установленные границы'; end;    И хотя весь текст остаётся доступен для просмотра и редактирования путём перемещения курсора в ту или иную сторону, программист должен предусмотреть достаточную длину компонента Delphi Edit заранее, на этапе конструирования.

   

   Это не касается размера компонента по вертикали. Если изменить размер шрифта (свойство Font), то высота компонентаDelphi Edit подстроится под высоту выбранного размера шрифта. Впрочем, это будет так, если не менять свойство AutoSize, имеющего тип Boolean. По умолчанию оно равно True. Если же установить его в False, то придётся подстраивать и высоту компонента Edit вручную.    Теперь рассмотрим события компонента Delphi Edit. В момент изменения свойства Text происходит событие OnChange. Причём не имеет значения, каким способом было произведено это изменение, вручную с клавиатуры или присвоением в программе. Новое значение Edit1.Text можно сразу присвоить переменной и использовать. Нужно только учитывать такой нюанс. По событию OnChange нельзя менять значение самого свойства Text этого компонента. Это естественно, ведь при этом изменении опять произойдёт событие OnChange, которое вызовет следующее, и так далее. То есть, программа зациклится и зависнет. А если без этого не обойтись, в обработчике события OnChange необходимо предусмотреть условие, при выполнении которого изменения свойства Text уже не будет.    Далее, рассмотрим события, происходящие при вводе с клавиатуры. При нажатии кнопки последовательно происходят события:

  1. OnKeyDown

  2. OnKeyPress

  3. OnChange

  4. OnKeyUp

   События OnKeyDown и OnKeyPress происходят практически перед нажатием, когда клавиша ещё находится в верхнем положении. Этим можно воспользоваться, чтобы переопределить символ, который появится в строке компонента. Вот как выглядят заголовки обработчиков этих событий: procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); procedure  TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);    Специально подчёркнуто отличие: в обработчике KeyDown переменная Key имеет тип Word, то есть это число, а в обработчике KeyPress эта переменная имеет тип Char, то есть это символ. Отсюда следует, что обработчик KeyPressобрабатывает нажатия только клавиш клавиатуры с символами букв и цифр, а обработчик KeyDown также и остальных клавиш.    То есть, зная коды клавиш клавиатуры, можно в обработчике KeyDown присвоить переменной Key код нужной клавиши, а в обработчике KeyPress присвоить нужный символ, и это будет имитация нажатия соответствующей клавиши клавиатуры.    Возникает вопрос, как же узнать код клавиши клавиатуры, если под рукой нет справочника. Это очень просто. Нужно в обработчике события OnKeyDown значение переменной Key вывести на Форму, например, в заголовок: procedure  TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin   Caption:=IntToStr(Key); end;    Ну вот, и не нужно в справочники лезть, чтобы узнать код клавиши клавиатуры! Например, код клавиши Enter равен 13, а код клавиши Esc равен 27.    В обработчике KeyPress можно написать процедуру ввода пароля. Обычно при вводе пароля вместо нажатого символа выводится символ ' * '. Для достижения такого эффекта сначала переменную Key сохраняем в глобальной переменной Pass, а затем переопределяем её, заменяя на звёздочку. Для наглядности пароль, равный слову "пароль" :), я выведу в заголовок Формы:

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin   Pass:=Pass+Key;   Key:='*';   Caption:=Pass; end;

   

   Возникает вопрос, а как вообще запретить ввод символа с клавиатуры? Для того, чтобы никакой символ не появился в поле ввода компонента Delphi Edit (да и любого компонента ввода данных), нужно в процедуре-обработчике KeyPressпереопределить его символ на код символа "отсутствие символа"! Код "отсутствие символа" равен #0. Таким образом можно разрешить ввод только определённых символов.    Например, напишем программу для ввода только цифр. Для этого создадим множество разрешённых для ввода символов. В программе будем проверять, входит ли вводимый символ в множество разрешённых, и если нет - запрещаем его появление: procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); const Digit: Set of Char=['0' .. '9']; begin if not (Key in Digit) then  Key:=#0; end;    А вот здесь текст модуля, который для компонента Delphi edit обеспечивает все операции по вводу и удалению только чисел, в том числе дробных. В нём используется всего две процедуры. Одна обеспечивает ввод только допустимых символов, а вторая корректирует получившееся число, приводя его к привычному нам, общеупотребительному виду.    Что касается обработчика KeyUp, то его использование аналогично использованию обработчика KeyDown, только принимая во внимание, что событие OnKeyUp происходит в момент отпускания клавиши.    Напоследок о возможности программного управления курсором и выделения текста в компоненте Delphi Edit. Для реализации этих задач служат свойства

  • SelStart

  • SelLength

  • SelText

Все эти свойства доступны и для чтения, и для записи.    - Свойство SelStart (типа Integer) определяет порядковый номер символа, перед которым находится курсор. Отсчёт идёт от нуля;    - Свойство SelLength (типа Integer) задаёт количество выделенных символов. Причём оно может быть и отрицательным. Тогда выделение идёт в обратную сторону, справа налево;    - Свойство SelText (типа String) содержит выделенный текст.    Чтобы выделенный текст был заметен, необходимо, чтобы компонент Edit обладал фокусом ввода. Для перемещения фокуса ввода к нужному компоненту служит свойство SetFocus. То есть, чтобы было видно выделение второго символа, нужно написать: begin   Edit1.SetFocus;   Edit1.SelStart:=1;   Edit1.SelLength:=1; end;    Если пропустить первый оператор, то свойство SelText всё равно будет содержать в себе второй символ, но на экране заметно этого не будет, если, конечно, фокус ввода не был перемещён туда ранее.

МЕМО

Компонент Delphi Memo это простой текстовый редактор. Delphi Memo позволяет вводить многострочный текст с клавиатуры, загружать его из файла, редактировать и сохранять в файл текстового формата. При изучении работы с Delphi Edit советую посетить страничку работа со строками Delphi, так как там описываются функции Delphi для работы с данными, представленными в текстовой форме, с которыми и оперирует компонент Memo.    Простота текстового редактора компонента Delphi Memo заключается в том, что текстовый редактор Delphi Memo не обладает возможностями форматирования содержещегося в нём текста. Это означает, что все атрибуты выбранного шрифта будут относиться ко всему тексту.    Текст в компоненте Delphi Memo размещается построчно. Поэтому имеется доступ к каждой строке текста отдельно. Строки в редакторе Delphi Memo являются объектами Lines[i] типа String, где i - номер строки, отсчитываемый от нуля. ОбъектLines[i] доступен и для чтения, и для записи. Соответственно, текст в компоненте Memo можно редактировать не только с клавиатуры, но и программно: var S: String; begin  Memo1.Lines[3]:='Четвёртая строка по счёту';  S:=Memo1.Lines[3]; end;    Естественно, для успешного присвоения текста определённой строке необходимо, чтобы эта строка физически существовала! То есть, данным способом можно только редактировать текст. Новую строку создать таким способом невозможно. Для создания новых строк служат методы

  • Add()

  • Insert()

   Метод Add() добавляет новую строку в конец, а метод Insert() внедряет новую строку перед указанной, для чего методInsert() имеет соответствующий параметр: begin  Memo1.Lines.Add('Это будет последняя строка');  Memo1.Lines.Insert(2, 'Эта строка будет третьей');  //Так как отсчёт идёт от нуля! end;    Delphi Memo имеет также метод для удаления строки: Memo1.Lines.Delete(i); //Удаление строки с индексом i     Компонент Delphi Memo позволяет получить доступ к тексту как целому. Свойство Text типа String является текстом, содержащимся в редакторе, в виде одной строки. Необходимо учитывать, что эта строка также будет включать в себя и непечатаемые символы конца строки #13 и символы переноса строки #10. Кстати, чтобы продолжить текст с новой строки, необходимо использовать последовательно оба этих символа:   Memo1.Text:='Предыдущий текст'+#13+#10+'Это уже новая строка';    Delphi Memo обладает свойствами для перемещения курсора и выделения текста, такими же, как и у компонента Delphi Edit:

  • SelStart

  • SelLenght

  • SelText

Напоминаю: - свойство SelStart типа Integer задаёт номер символа, после которого будет стоять курсор (отсчитывается от начала всего текста); - свойство SelLenght типа Integer определяет количество выделенных символов; - свойство SelText типа String содержит выделенный текст.    Для того, чтобы выделение текста было заметно на экране, небходимо, чтобы компонент обладал фокусом ввода. То есть, чтобы ранее либо пользователь переместил туда курсор, клавишей Tab или щёлкнув мышкой, либо был выполнен операторMemo1.SetFocus.    Остаётся вопрос, как определить, где сейчас находится курсор, на какой строке, и позицию в строке. Эти параметры содержатся в свойстве CaretPos компонента Delphi Memo, которое имеет тип TPoint, то есть точка - запись с координатами X и Y:    Memo1.CaretPos.X // позиция курсора в строке (в отличие от SelStart);    Memo1.CaretPos.Y // номер строки где находится курсор; 

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]