Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
PAGE \* MERGEFORMAT 50
МИНИСТЕРСТВО ОБРАЗОВАНИЯ РЕСПУБЛИКИ БЕЛАРУСЬ
УЧРЕЖДЕНИЕ ОБРАЗОВАНИЯ
«МОГИЛЕВСКИЙ ГОСУДАРСТВЕННЫЙ ПОЛИТЕХНИЧЕСКИЙ КОЛЛЕДЖ»
УТВЕРЖДАЮ
Директор колледжа
_________А.Н.Шапчиц
____________________
О С Н О В Ы А Л Г О Р И Т М И З А Ц И И
И П Р О Г Р А М М И Р О В А Н И Я
МЕТОДИЧЕСКИЕ РЕКОМЕНДАЦИИ
ПО ИЗУЧЕНИЮ ДИСЦИПЛИНЫ,
ЗАДАНИЯ НА ДОМАШНЮЮ КОНТРОЛЬНУЮ РАБОТУ № 2
ДЛЯ УЧАЩИХСЯ ЗАОЧНОЙ ФОРМЫ ОБУЧЕНИЯ
ПО СПЕЦИАЛЬНОСТИ 2-40 01 01
2013
Автор: Пикулина А.Н., преподаватель УО «Могилевский государственный политехнический колледж»
Рецензент: Сергиенко О.В., преподаватель УО «Могилевский государственный политехнический колледж»
Разработано на основе учебной программы для учреждений, обеспечивающих получение среднего специального образования, утвержденной Министерством образования Республики Беларусь, 2007.
Пояснительная записка
Для учащихся специальности “Программное обеспечение информационных технологий” необходимо получить навыки алгоритмизации и программирования вычислительных, экономических и финансовых задач.
Для этого необходимо изучить несколько языков высшего уровня с упором на алгоритмизацию таких задач, при этом использовать сведения других специальных курсов, таких как «Математика», «Теория вероятностей и математическая статистика».
Дисциплина "Основы алгоритмизации и программирования" ставит своей целью изучение основ алгоритмизации, методов проектирования и разработки программ на языках программирования Паскаль на основе интегрированной среды Турбо-Паскаля и современной системы программирования Delphi.
Специалист должен в области алгоритмизации и программирования знать на уровне представления:
- эволюцию языков программирования, их классификацию, понятие системы программирования;
- структуру программного обеспечения и систем программирования;
- статические и динамические структуры данных;
- зависимость эффективности алгоритмов от способов представления данных;
знать на уровне понимания:
- понятие алгоритмизации, свойства алгоритмов, общие принципы построения алгоритмов, способы описания алгоритмов, виды алгоритмов, программ и данных;
- принципы построения эффективных алгоритмов;
- основы структурного проектирования программ;
- методы разработки программ, структуру программы, основные элементы языка программирования, операторы, функции и операции, управляющие структуры, структуры данных, файлы, классы памяти;
- принципы программирования на процедурно-ориентированном языке на примере одного из простых языков программирования (например, Паскаль, Си);
- виды подпрограмм, методику разработки библиотек подпрограмм;
уметь:
- разрабатывать алгоритм решения задачи;
- разрабатывать программы, проводить их отладку, тестирование п верификацию;
- использовать разработанные библиотеки подпрограмм.
В результате изучения дисциплины учащиеся выполняют 2 домашние контрольные работы, курсовой проект и сдают экзамен.
Общие методические рекомендации по выполнению домашней
контрольной работы № 2
Основным методом изучения дисциплины является самостоятельная работа, которая должна проводиться в последовательности, предусмотренной программой дисциплины, и быть обязательно систематической.
Задания на домашнюю контрольную работу № 2 разработаны в количестве 100 вариантов в соответствии с программой курса. Номера заданий выбираются в соответствии с двумя последними цифрами шифра учащегося, на пересечении соответствующей строки с соответствующим столбцом из таблицы 9.
Каждый вариант содержит 5 заданий- 3 теоретических вопроса и 2 практических задания.
При оформлении контрольной работы следует придерживаться следующих требований:
- работа выполняется в отдельной тетради или на листах А4 (шрифт 12-14, межстрочный интервал - одинарный). Следует пронумеровать страницы и оставить на них поля: справа не менее 3 см для замечаний преподавателя, остальные поля 2,5 см;
- на титульном листе указываются название дисциплины, номер работы, группа, фамилия, имя, отчество учащегося, шифр;
- ответ следует начинать с номера и полного названия вопроса. В ответе на теоретические вопросы текст ответа должен быть осмыслен автором. Тексты, переписанные из книг или скачанные из Интернета, и не обработанные учащимся, не засчитываются. При выполнении практических заданий необходимо описать ход работы по разработке приложения со вставкой изображений созданных форм;
- чертежи и схемы следует выполнять аккуратно, соблюдая масштаб и ГОСТ19.701-90 (ИСО 5807-85);
- в конце работы следует указать список использованных источников, которым вы пользовались, проставить дату выполнения работы и подпись;
- к домашней контрольной работе прикладывается диск с файлами, содержащими программы решения задач;
- если в работе допущены недочеты или ошибки, то учащийся должен выполнить все указания преподавателя, сделанные в рецензии;
- контрольная работа должна быть выполнена в срок (в соответствии с учебным графиком). В период сессии работы на проверку не принимаются;
- учащиеся, не имеющие зачета по контрольной работе, к экзамену не допускаются;
- во время экзамена зачтенные контрольные работы предоставляются преподавателю.
Критерии оценки домашней контрольной работы № 2
Контрольная работа, признанная преподавателем удовлетворительной и содержащая 75% положенного объема, оценивается словом «Зачтено».
Контрольная работа будет не зачтена, если:
- выполнена не по варианту;
- не раскрыто основное содержание 1 теоретического вопроса и есть незначительные недочеты в других теоретических вопросах или в практических заданиях;
- не выполнено одно практическое задание;
- нет диска с программами;
- есть существенные недочеты в заданиях (в сумме более 25%).
Список используемых источников
Программа дисциплины и методические рекомендации по ее
изучению
Раздел 6 Элементы системного программирования на Паскале
Тема 6.1 Доступ к системным ресурсам
Предопределенные массивы МЕМ. Функции библиотеки DOS. Прерывания, обработка прерываний. Адреса памяти для доступа к системным ресурсам. Назначение и объявление абсолютной переменной. Назначение и объявление предопределенных массивов. Функции библиотеки DOS для работы с системными ресурсами. Понятие прерываний. Прерывания DOS и BIOS. Примеры обработки прерываний.
Литература: [6, с. 10-54]; [7, с. 80-81]
Тема 6.2 Структура резидентной программы
Структура памяти MS DOS. Раздел резидентных программ. Структура Exe, com-файлов. Передача параметров вызываемым программам. Процедурные типы. Передача функций в качестве параметров.
Литература: [6, с. 10-54]; [7, с. 80-81]
Вопросы для самоконтроля
1 Адреса памяти для доступа к системным ресурсам.
2 Назначение и объявление абсолютной переменной.
3 Назначение и объявление предопределенных массивов.
4 Функции библиотеки DOS для работы с системными ресурсами.
5 Прерывания DOS и BIOS.
6 Обработка прерываний.
7 Структура памяти MS DOS, раздел резидентных программ.
8 Структура Exe, com-файлов.
9 Передача параметров вызываемым программам.
10 Процедурные типы.
11 Передача функций в качестве параметров.
Раздел 7 Объектно-ориентированное программирование
Понятия объект, свойства объекта. Способы описания объекта. Инкапсуляция. Полиморфизм. Наследование Понятие конструктора и деструктора. Понятие и назначение конструктора и деструктора объектов. Понятие и назначение виртуальных функций. Реализация виртуальных функций
Литература: [4]; [5, с. 14-19, 83-96]
Вопросы для самоконтроля
Раздел 8 Система программирования Delphi
Тема 8.1 Особенности разработки программ под WINDOWS.
Введение в Delphi
Отличительные особенности разработки программ под Windows. Среда разработки Delphi, ее назначение, возможности и достоинства.
Литература: [3, с. 97-98]; [6]
Тема 8.2 Основы визуального программирования
Основы визуального программирования. Свойства, методы и события объектов. Компоненты Главного окна. Форма и палитра компонентов. Редактор и Знаток кода. Компоненты страницы Standard, их назначение, основные свойства. Размещение нового компонента. Источники и обработка событий. Обращения к свойствам и методам.
Литература: [5, с. 98-143]; [4]
Тема 8.3 Компоненты страницы Additional, их назначение,
свойства, применение
Компоненты страницы Additional, основные свойства. Назначение компонентов страницы Additional.
Литература: [4]; [5, с. 221-251]
Тема 8.4 Компоненты страницы Win 32, их назначение,
свойства, применение
Компоненты страницы Win 32, основные свойства. Назначение компонентов страницы Win 32.
Литература: [4]; [5, с. 252-301]
Тема 8.5 Компоненты страницы System, их назначение,
свойства, применение
Компоненты страницы System, основные свойства. Назначение компонентов страницы System.
Литература: [4]; [5, с. 302-306]
Тема 8.6 Компоненты страниц Dialogs и Samples, их
назначение, свойства, применение
Компоненты страниц Dialogs и Samples, основные свойства. Назначение компонентов страниц Dialogs и Samples.
Литература: [4]; [5, с. 214-218]
Тема 8.7 Графические возможности Delphi
Графические возможности Delphi. Понятие Канвы. Ее возможности. Использование Пера (Карандаша), Кисти. Вывод текста в графическом режиме. Создание графических объектов. Приемы работы с иллюстрациями. Приемы работы с битовыми образами. Алгоритм создания мультипликации. Создание файла ресурсов.
Литература: [4]; [5, с. 183-198]
Тема 8.8 Мультимедийные возможности Delphi
Мультимедийные возможности Delphi. Назначение и свойства компонентов Animate и MediaPlayer. Способы записи и воспроизведения звука. Принципы создания анимации. Способы просмотра видеороликов и анимации.
Литература: [4]
Тема 8.9 Компоненты страниц Data Access, Data Control и BDE
Назначение, свойства компонентов страниц Data Access, Data Control и BDE. Возможности компонентов страниц Data Access, Data Control и BDE на примерах.
Литература: [4]; [5, с. 307-370]
Тема 8.10 Создание справочной системы
Подготовка материалов. Создание сносок и ссылок на раздел. Компиляция справочной системы.
Литература: [4]; [5, с. 647-652]
Тема 8.11 Создание установочного диска
Процесс создания установочного диска.
Литература: [3, с. 10-54]; [6, с. 80-81]
Вопросы для самоконтроля
Задания на домашнюю контрольную работу № 2 по
дисциплине « Основы алгоритмизации и программирования»
Практические задания
91-120 Выполните задание, добавив, если необходимо, защиту от неправильного ввода данных. Форма обязательно должна содержать кнопку для закрытия приложения, кнопку очистки компонентов и главное меню, дублирующее основные действия.
1 вариант (размер текста 12, начертание жирное и курсивное, фон - белый).
121-150 Выполните задание, добавив, если необходимо, защиту от неправильного ввода данных. Форма обязательно должна содержать кнопку для закрытия приложения.
Методические рекомендации по выполнению задач домашней
контрольной работы № 2
1 Состав проекта
Delphi загружается с уже созданным пустым проектом. Чтобы закрыть этот проект выбрать из меню File пункт Close All. Чтобы сохранить проект Save All. Создать новый проект можно тремя способами:
- выбрать из меню File пункт New и затем Application;
- выбрать из меню File пункт New и затем Other. Откроется окно, в нем нужно выбрать пункт Application и нажать ОК;
- в окне менеджера проекта нажать кнопку New и сразу откроется окно. В нем нужно выбрать пункт Application и нажать ОК.
Для просмотра состава проекта применяю Менеджер проекта. (Вид/Менеджер проекта).
ProjectGroup1 (заголовок дерева) имя группы проектов. В одной группе проектов может быть несколько приложений. Если нажать кнопку New в окне менеджера проектов и создать новое приложение, то оно будет добавлено в существующую группу проектов.
Project1.exe имя проекта (приложения). Когда ты создаётся новое приложение, Delphi даёт ему имя Project плюс порядковый номер.
Unit1 модуль. Проект состоит из модулей. Каждое окно программы это отдельный модуль. Модуль состоит из двух файлов:
Unit1.pas С расширением .pas показываются файлы, содержащие исходный код модуля. Имя файла такое же, как и у модуля.
Form1 это визуальная форма. Она сохраняется в файле с таким же именем, как у модуля, но с расширением .dfm.
Для сохранения приложения из меню File пункт Save All. Сначала Delphi запросит ввести имя модуля. По умолчанию, уже указано текущее имя Unit1.pas. Нежелательно вводить имена с пробелами или на русском языке. Важно выбрать директорию, куда надо сохранить модуль и проекты. Желательно, чтобы всё хранилось в одной директории. Нажать кнопку «Сохранить». Затем Delphi запросит имя будущего проекта. Проект сохранится под именем «*.dpr».
В папке проекта можно найти следующие файлы:
- *.cfg файлы с расширением .cfg содержат конфигурацию проекта;
- *.dof - файлы с расширением .dof содержат опции проекта;
- *.dpr файлы с расширением .dpr это сам проект. В этом файле находится описание используемых в проекте модулей и описание инициализации программы. Этот файл можно использовать и для написания кода. В будущем, мы научимся писать код и в этом модуле;
- *.res - файлы с расширением .res содержат ресурсы проекта, такие как иконки, курсоры и др.;
- *.pas - файлы с расширением .pas содержат исходный код модулей;
- *.dfm - файлы с расширением .dfm содержат визуальную информацию о форме;
- *.ddp файлы с расширением .ddp - вспомогательный файл модуля;
- *.dcu - файлы с расширением .dcu откомпилированный модуль. Когда компилируется программа, все модули проекта собираются в один и получается запускной файл.
Для выполнения при проектировании некоторых команд предназначены пиктографические кнопки (рисунок 1).
2 Работа с проектом
Для запуска проекта надо нажать F9 или соответствующую пиктограмму. Для завершения работы программы надо нажать стандартную кнопку Закрыть в верхней части окна или создать копку для закрытия формы, поместив в обработчик ее события OnCick команду <Имя формы>.Close; Например: form1.Close;
Если в процессе выполнения возникла ошибка, и появилось сообщение об этом, то программа выглядит зависшей. Для устранения этой проблемы надо еще раз нажать F9 или пиктограмму Запустить.
Если программа зависает, и нет возможности закрыть ее без закрытия Delphi. Надо в меню Запуск (Run) выбрать команду Сброс программы (Program Reset) или Ctrl +F2.
Для отладки используют клавиши F7 (пошаговое выполнение), F8 (пропуск блока) и F4 (Запуск до курсора). Значение переменных и свойств во время отладки можно просматривать, просто наводя на них курсор мыши. Всплывающая подсказка будет содержать текущее значение.
3 Назначение и свойства компонентов страницы Standard
Страница Standard содержит все основные компоненты (рисунок 2), необходимые для создания простого приложения.
Рисунок 2 Компоненты страницы Standard
Для ввода текста и чисел используются Edit и Memo.
Для вывода текста и чисел Edit, Memo, Label, Panel.
Для вызова события Button.
Для переключения и индикации RadioButton, RadioGroup, CheckBox.
Для вывода списков ComboBox, ListBox.
Компоненты имеют много общих свойств, приведем некоторые из них:
Основные свойства компонентов представлены в таблице 1:
Таблица 1 - Компоненты страницы Standard
Вид |
Пояснение |
Label (метка) компонент для отображения статического текста. AutoSize определяет, зависит ли размер элемента от текста. Transperend прозрачность компонента. WordWrap если равно True, и AutoSize=False то производится автоматический перенос на следующую строку. |
|
Edit (текстовое поле) компонент ввода и вывода текста, с возможностью редактирования. ReadOnly только для чтения. PasswordChar задает символ на которые будет заменяться вводимый текст. Используется при создании окна пароля. |
|
Memo Компонент для редактирования многострочного текста. Lines содержимое текста. Это имеет свои свойства и методы: Strings свойство объекта Lines служит для доступа к каждой строке. Чтобы получить i-ю строку, нужно написать Memo1.Lines.Strings[1], нумерация с нуля. CaretPos указывает на текущую позицию курсора. Тип переменной запись. У TPoint есть два свойства «Х» и «Y». Х указывает на текущую колонку, а Y указывает на текущую строку. |
|
Button кнопка. Cursor выбор вида курсора , который будет отображаться на этой кнопкой. Cancel если = true, то нажатие клавиши Esc будет эквивалентно нажатию на данную кнопку. Default если= true, то нажатие клавиши ввода Enter будет эквивалентно щелчку на данной кнопке, даже если она в этот момент не находится в фокусе. Если в момент нажатия Enter в фокусе находится другая кнопка, то все-таки сработает именно кнопка в фокусе. Если у нескольких кнопок на форме свойство Default задано равным true, то при нажатии Enter сработает та из них, которая находится раньше в последовательности табуляции. Click метод, его выполнение эквивалентно щелчку на кнопке, т.е. вызывает событие кнопки OnClick. |
Продолжение таблицы 1
Вид |
Пояснение |
ListBox Компонент выбора из списка. Items содержимое списка. ItemIndex номер выбранной строки. Если ни одна строка не выбрана, то Itemlndex = -1. Strings свойство объекта Lines служит для доступа к каждой строке. MultiSelect Свойство, разрешающее пользователю множественный выбор в списке. Columns определяет число столбцов, в которых будет отображаться список, если он не помещается целиком в окне компонента ListBox. Sorted позволяет упорядочить список по алфавиту. При Sorted = true новые строки в список добавляются не в конец, а по алфавиту. |
|
ComboBox выпадающий список с возможностью ввода текста Items Свойство, содержащее список строк. Text Выбор пользователя или введенный им текст определяется по значению этого свойства. ItemIndex индекс выбранного пользователем элемента списка. Если в окне проводилось редактирование данных, то ItemIndex = -1. Style Стиль изображения компонента. МaxLength определяет максимальное число символов, которые пользователь может ввести в окно редактирования. Если MaxLength = 0, то число вводимых символов не ограничено. DropDownCount число строк, в выпадающем списке без возникновения полосы прокрутки. |
|
CheckBox Индикаторы с флажком. State: cbChecked, cbGrayed, cbUnchecked соответствуют трем состояниям. AllowGrayed если= true, то допускаются три состояния, иначе только 2. Checked свойство обозначающие состояние, если = true, то индикатор выбран. |
|
RadioButton Радиокнопка. Радиокнопки образуют группы взаимосвязанных индикаторов, из которых обычно может быть выбран только один. Checked определяет, выбрана ли данная кнопка пользователем, или нет. |
Продолжение таблицы 1
Вид |
Пояснение |
RadioGroup панели группы радиокнопок. Items Надписи кнопок и их количество. Columns задает количество столбцов для расположения кнопок. ItemIndex показывает индекс выбранной кнопки. Индексы, начинаются с 0. По умолчанию Itemlndex = -1, что означает отсутствие выбранной кнопки. В некоторых случаях необходимо использовать свободное размещение индикаторов. Такие группы и объединяются единым контейнером, панелью GroupBox. |
|
Panel компонент группировки объектов. Все компоненты, размещенные на панели, перемещаются вместе с ней. Если панель становится невидимой, то невидимыми будут и все компоненты на ней. Имеет функцию отображения статического текста в одну строку. Свойства BorderStyle, BevelInner, BevelOuter, BevelWidht, BorderWidht, дающие обширные возможности для оформления надписи. |
4 Обработка массивов при помощи компонентов страницы
Standard
Обработка массивов по сравнения с обычными переменными имеет ряд особенностей.
Для задания значений элементов массива в Паскале применялся цикл For, который выполнял команду вывода подсказки Writeln и команду чтения Readln.
В Delphi для задания ряда чисел обычно массив выглядит именно так, можно использовать несколько компонентов самым удобным из которых является StringGrid.
Из компонентов страницы Standard для задания массива желательно использовать Memo. Каждая его строка должна соответствовать значению одного элемента массива. В него можно ввести заранее выбранное число строк и считывать числа построчно циклом For.
Если размер массива не задан, можно в компоненте Memo на следующей после последнего элемента массива строке поставить условный знак окончания массива (например *). В этом случае считывание производится циклом While memo1.Lines.strings[i]<>* do
Для дальнейшей обработки массив надо преобразовать к числовому виду. Для этого в программе должен быть объявлен массив и строковая переменная. Чтение из Memo производится в строковую переменную, а затем при помощи функций перевода из одного типа в другой (например StrToFloat) очередному элементу массива надо присвоить значение.
Для вывода нового или измененного массива можно использовать компоненты Memo, ListBox, Label, Edit. Для добавления новой строки с элементом массив обычно используется метод Add. Для компонентов Label и Edit надо создать текстовую переменную, к которой циклом For надо добавить все элементы, предварительно преобразовывая их к текстовому типу, например s:=s+ +IntToStr(a[i]).
Для выбора операции над массивом можно использовать компоненты ListBox, ComboBox, RadioButton, ChekBox.
При работе с ними, для проверки того, какая операция выбрана, необходим оператор ветвления If .
Например If RadioButton1.Checked, If ListBox1.ItemsIndex =1 и т.д.
5 Назначение и свойства компонентов страницы Additional
Страница Additional содержит большой набор компонентов (рисунок 3) различных назначений. Часть из них подобна компонентам страницы Standard, но обладает более широкими возможностями. Часть не имеет аналогов на других страницах и применяется для оформления приложения.
Рисунок 3 Компоненты страницы Additional
Основные свойства компонентов страницы Additional представлены в таблице 2.
Таблица 2 - Компоненты страницы Additional
Вид |
Пояснение |
BitBtn кнопка с картинкой. BitBtn аналог кнопки Button отличается, в основном, возможностью выводить на ее поверхность изображение. Большинство свойств, методов и событий у этих видов кнопок одинаковы. |
Продолжение таблицы 2
Вид |
Пояснение |
Glyph Задает изображение на кнопке. При нажатии кнопки с многоточием в строке свойства Glyph в Инспекторе Объектов вызывается окно. Нажав в нем кнопку Load, вы перейдете в обычное окно открытия файла рисунка и можете выбрать файл битовой матрицы .bmp, содержащий желаемое изображение. В частности, с Delphi поставляется большое количество изображений для кнопок. Они расположены в каталоге \lmages\Buttons, а сам каталог Images расположен в каталоге \program files\borland\borland shared. Margin размещение надписи и рисунка на кнопке. Если свойство Margin равно -1 (значение по умолчанию), то изображение и надпись размещаются в центре кнопки. Layout определяет положение изображения по отношению к надписи. Spacing задает число пикселей, разделяющих изображение и надпись на поверхности кнопки. Kind определяет тип кнопки. По умолчанию равно bkCustom заказная. Можно установить и множество других предопределенных типов: bkOK, bkCancel, bkHelp, bkYes, bkNo, bkClose, bkAbort, bkRetry, bkgnore, bkAll. |
|
SpeedButton быстрая кнопка. SpeedButton кнопка с возможностью отображения пиктограмм, может использоваться как обычная кнопка или как кнопка с фиксацией нажатого состояния. Обычно они используются в качестве быстрых кнопок, дублирующих различные команды меню, и в инструментальных панелях, в которых требуется фиксация нажатого состояния. Grouplndex индекс группы. Если Grouplndex = 0, то кнопка ведет себя так же, как Button и BitBtn. Если Grouplndex > 0 и AllowAllUp = true, то кнопка работает с фиксацией состояния. Если есть несколько кнопок, имеющих одинаковое ненулевое значение GroupIndex, то они образуют группу взаимосвязанных кнопок, из которых нажатой может быть нажата только одна кнопка. |
|
MaskEdit компонент Шаблон ввода. Этот компонент позволяет вводить данные в текстовое поле по заданному шаблону. Он полезен для приложений, где надо контролировать вводимую пользователями информацию. Структура маски обычно задается через свойство EditMask, которое хранит структуру маски в текстовом виде. Это же свойство позволяет вызвать окно построителя маски. В первом разделе шаблоне записываются специальным образом символы, которые можно вводить в каждой позиции, и символы, добавляемые самой маской. |
Продолжение таблицы 2
Вид |
Пояснение |
Bevel компонент Рамка. Используется для создания рамок и отдельных линий оформления. Напоминает панель, но не предназначен для группировки элементов. Style стиль отображения Bevel Shape контур компонента. |
|
StringGrid таблица строк. Cells[ACol, ARow: Integer]: string Строка, содержащаяся в ячейке с индексами столбца и строки ACol и ARow. ColCount и RowCount число столбцов и строк, соответственно. FixedCols и FixedRows число фиксированных, не прокручиваемых столбцов и строк. FixedColor цвет фона фиксированных ячеек определяется свойством. ScrollBars определяет наличие в таблице полос прокрутки. Options является множеством, определяющим многие свойства таблицы: наличие разделительных вертикальных и горизонтальных линий в фиксированных (goFixedVertLine и goFixedHorzLine) и не фиксированных (goVertLine и goHorzLine) ячейках, возможность для пользователя изменять с помощью мыши размеры столбцов и строк (goColSizing и goRowSizing), перемещать столбцы и строки (goColMoving и goRowMoving) и многое другое. Важным элементом в свойстве Options является goEditing возможность редактировать содержимое таблицы. OnSelectCell событие, возникающее в момент выбора пользователем ячейки. В обработчик этого события передаются целые параметры ACol и ARow столбец и строка выделенной ячейки, и булев параметр CanSelect допустимость выбора. Параметр CanSelect можно использовать для запрета выделения ячейки, задав его значение false. А параметры ACol и ARow могут использоваться для какой-то реакции программы на выделение пользователя. |
|
Image изображение. Данный компонент активно используется во многих программах, причем не только для отображения статических картинок, но и для создания различных анимационных эффектов. Picture изображение. Center Если свойство Center = True, рисунок центрируется, в противном случае его верхний левый угол совмещается с верхним левым углом рамки. Transparent определяется прозрачность. Этот режим не применим к точечному изображению в формате .BMP. |
Назначение символов первой части маски представлены в таблице 3.
Таблица 3 Назначение символов первой части маски
Символ |
Назначение |
1 |
2 |
! |
Если этот символ присутствует в маске, то необязательные символы вставляются перед маской. Если отсутствует необязательные символы вставляются после маски |
> |
Все последующие символы автоматически приводятся к верхнему регистру |
< |
Все последующие символы автоматически приводятся к нижнему регистру |
<> |
Прекращение преобразования регистра |
\ |
Последующий символ вставляется в маску. Данная возможность необходима для добавления символов, используемых в качестве элементов шаблона |
L |
В данную позицию разрешен только ввод буквы |
I |
В данную позицию разрешен только ввод буквы, но ее можно оставить пустой |
А |
В данную позицию разрешен только ввод буквы или цифры |
а |
В данную позицию разрешен только ввод буквы или цифры, но ее можно оставить пустой |
С |
В данную позицию разрешен ввод произвольного символа |
с |
В данную позицию разрешен ввод произвольного символа, но ее можно и оставить пустой |
О |
В" данную позицию разрешен только ввод цифры |
9 |
В данную позицию разрешен только ввод цифры, но ее можно оставить пустой |
# |
В данную позицию разрешен только ввод цифры или символов. Позицию можно оставить пустой |
: |
В данную позицию вставляется символ, который в текущей версии Windows используется для разделения часов, минут и секунд при записи времени |
_ |
В данную позицию автоматически вставляется пробел |
Вторая часть маски определяет, будут ли эти дополнительные символы включены в итоговый текст. Символ 0 указывает, что они не должны включаться в результат, любой другой символ разрешает их включение. Третья часть маски символ, наполняющий позиции шаблона, которые пользователь оставил пустыми (по умолчанию используется пробел).
6 Назначение и свойства компонентов страницы Win 32
Компоненты страницы Win 32 представлены на рисунке 4.
Рисунок 4 Компоненты страницы Win 32
Основные свойства компонентов страницы Win 32 представлены в таблице 4.
Таблица 4 - Компоненты страницы Win 32
Вид |
Пояснение |
UpDown кнопка-счетчик. Обеспечивают ввод целых чисел. Компонент UpDown превращает окно редактирования Edit в компонент, в котором пользователь может выбирать целое число, изменяя его кнопками со стрелками. Если к тому же установить в true свойство Edit ReadOnly, то пользователь просто не сможет ввести в окно какой-либо свой текст и вынужден будет ограничиться выбором числа. Свойства компонента: - Associate связывает кнопки со стрелками с одним из оконных компонентов, обычно с Edit. - AlignButton определяет, слева или справа от окна будут размещаться кнопки. - Orientation определяет, расположатся ли кнопки по вертикали или по горизонтали. - ArrowKeys определяет, будут ли управлять компонентом клавиши клавиатуры со стрелками. - Тhousands определяет наличие или отсутствие разделительного пробела между каждыми тремя цифрами разрядов вводимого числа. - Min и Мах задают минимальное и максимальное значения чисел. - Increment задает целое приращение числа при каждом нажатии на кнопку. - Position определяет текущее значение числа. Это свойство можно читать, чтобы узнать, какое число задал пользователь. - Wrap определяет, поведение достижении максимального или минимального значений. Если Wrap = false, то при достижении максимального или минимального значения это число. Если Wrap = true, то Т.е. изменение чисел «закольцовывается». |
Продолжение таблицы 4
Вид |
Пояснение |
Для ввода дробных значений компонент нужно программировать. Например, обработчик щелчка имеет вид: procedure TForm1.UpDown1Click(Sender: TObject; Button: TUDBtnType); Begin End Параметр Button передает в процедуру тип нажатой кнопки. Он может принимать два значения btNext и btPrev. Проверяя, какая кнопка нажата, можно увеличивать или уменьшать число в компоненте Edit на любой шаг, в том числе и дробный. При этом связывать компонент Edit и UpDown не нужно. |
|
PageControl набор страниц. Представляет собой набор страниц, наложенных одна на другую. Доступ к каждой странице, содержащей свой набор элементов управления, осуществляется через так называемые корешки небольшие выступы над страницей, содержащие короткое название. Новая страница добавляется командой New Page (Создать страницу) из контекстного меню. В Инспекторе объектов (и в описании класса TForml) появляется описывающий ее новый объект TabSheetl. Для задания свойств одной страницы в списке Инспектора объектов выбирается нужная страница (но не объект PageControll!), а затем нужное свойство. Свойства компонента: - ActivePage выбранная в данный момент страница. Значение свойства это имя (свойство Name) текущей страницы. Для переключения страниц можно использовать и это свойство, если заранее известно, какую страницу надо показать: PageControl1.ActivePage := TabSheet2. - HotTrack имеет значение True, если текст корешка при наведении указателя выделяется ярким цветом. - MultiLine имеет значение True, если корешки разрешено отображать в несколько строк. - Style стиль объекта. - TabHeight, TabWidth высота и ширина корешка в пикселях - TabPosition определяет, где отображаются корешки. - OnChange событие перехода к новой вкладке |
Продолжение таблицы 4
Вид |
Пояснение |
- OnChanging событие происходит если пользователь выбрал новую вкладку, но процесс переключения страниц еще не произошел. Обычно обрабатывается, если надо сохранить (запомнить) состояние элементов управления старой страницы или установить начальные состояния элементов управления новой страницы в зависимости от некоторых условий. |
|
StatusBar строка состояния. Сразу после размещения компонента на форме строка состояния автоматически прикрепляется к нижней части формы. В дальнейшем она сама подстраивается под изменяемую ширину формы. Высоту строки подсказки можно менять либо с помощью мыши, либо с помощью свойства Height. |
|
ToolBar компонент Панель инструментов. Эта панель используется для управления быстрыми командными кнопками и другими «горячими» элементами управления. Она позволяет формировать многострочные наборы инструментов. Сразу после создания панель инструментов автоматически размещается у верхнего края формы. |
|
Animate Анимация AVI. Данный компонент позволяет организовать на форме небольшую анимацию - воспроизвести клип в формате А VI (Audio Video Interleaved, расширение файла .AVI) без воспроизведения звука. |
|
ProgressBar Индикатор. Индикаторы активно применяются во многих программах для отображения сведений о ходе длительного процесса (например, процесса инсталляции). Свойства Min, Max, Position, Orientation аналогичны свойствам компонента TTrackBar. Необходимо также отметить свойство Smooth. Если оно имеет значение True, то в полосе заполнения (отсчет в ней ведется слева направо) отображается сплошная линия, в противном случае сегментированная. |
7 Ввод и вывод даты и времени
Символы, предназначенные для ввода и вывода даты и времени представлены в таблице 5.
Таблица 5 Символы для ввода и вывода даты и времени
Вид |
Пояснение |
MonthCaLendar календарь. В красном кружке выделена текущая дата (она же более развернуто указана в нижней части календаря), синим подсвечена дата, выбранная при помощи мыши. Слева показаны номера недель в году (свойство WeekNumbers). MaxDate Максимальная дата, до которой календарь может быть прокручен помесячно. Тип свойства TDate (см. ниже). MinDate Минимально допустимая для просмотра дата. ShowToday Имеет значение True, если текущая дата дополнительно отображается в нижней части календаря. ShowTodayCircle Имеет значение True, если текущая дата выделяется красным кружком. Работа с календарем происходит на основе типа TDate (или его аналога TDateTime). Текущая выбранная дата записывается в свойство Date этого типа. Кроме типа TDateTime можно применять также системный формат TSystemTime, который содержит полное описание текущих даты и времени. Для работы с этими форматами в системе Delphi 7 имеется набор стандартных подпрограмм: - function Date: TDateTime; Возвращает текущую дату; - function DayOfWeek(Date: TDateTime): Integer; Номер дня недели, число от 1 до 7. (1 воскресенье, 7 суббота); - procedure DecodeDate(Date: TDateTime; var Year, Month, Day: Word); Выделение из даты года, месяца, дня и размещение их в переменных указанных на месте Year, Month, Day и имеющих тип Word; - procedure DecodeTime(Time: TDateTime; var Hour, Min, Sec, MSec: Word); Выделение из даты часов, минут, секунд и миллисекунд; - function DateTimeToStr(DateTime: TDateTime): string; Преобразование даты и времени в строку; - function DateToStr(Date: TDateTime): string; Преобразование даты в строку; - function StrToDateTime (const S: string): Преобразование строки, хранящей описание TDateTime; даты в формате, соответствующем локальным требованиям Windows, в дату и время формата TDateTime; function StrToTime(const S: string): TDateTime; Преобразование строки, хранящей описание даты в формате, соответствующем локальным требованиям Windows, во время в формате TDateTime; function StrToDate (const S: string): TDateTime; Преобразование строки, хранящей описание даты в формате, соответствующем локальным требованиям Windows, в дату формата TDateTime. |
Продолжение таблицы 5
Вид |
Пояснение |
DateTimePicker компонент Поле ввода даты/времени. Компонент представляет собой раскрывающийся список и используется для ввода даты и времени с клавиатуры (по формату в соответствии с локальными настройками Windows). При раскрытии списка открывается календарь (компонент TMonthCalendar). DateMode выбор способа работы компонента. Kind Если значение свойства равно dtkDate, компонент используется для ввода даты, в противном случае (значение dtkTime) для ввода времени. Когда дата или время в поле изменяются, генерируется сообщение OnChange. При раскрытии списка, содержащего календарь, объект пол учит сообщение OnDropDown, при закрытии сообщение OnCloseUp. |
8 Назначение и свойства компонентов страницы Standard
Компоненты страницы Standard представлены на рисунке 5.
Рисунок 5 - Компоненты страницы Standard
Основные назначения и свойства компонентов страницы Standard представлены в таблице 6.
Таблица 6 Компоненты страницы Standard
Вид |
Пояснение |
Timer таймер. Используется если в программе надо совершать некие действия через определенный промежуток времени. Например анимация и мультипликация. Имеет два свойства: - Enabled принимает значение True, если требуется, чтобы Timer включился; - Interval задает фиксированный промежуток времени между срабатываниями в миллисекундах. 1000 = 1 секунда. Событие, у данного компонента, только одно ОnТimег. Оно возникает, когда истекает указанный в свойстве Interval промежуток времени с момента последней генерации этого события. Если для работы необходимо знать системное время, то его возвращает функция Time: TDateTime; |
Продолжение таблицы 6
Вид |
Пояснение |
PaintBox компонент для рисования. Специальный компонент, имеющий канву (свойство компонента, позволяющее рисовать на его поверхности) и позволяющий рисовать на ней. Рисование на PaintBox вместо формы не имеет никаких преимуществ, кроме, может быть, некоторого облегчения в расположении одного или нескольких рисунков в площади окна. |
|
MediaPlayer мультимедийный проигрыватель. Предназначен для воспроизведения в рамках программы музыкальных и видеоклипов в различных форматах, поддерживаемых драйвером MCI (Media Control Interface). CoLoredButtons Настройка видимости различных кнопок управления. Можно сделать невидимым и весь компонент, установив его свойство Visible равным False. Это нужно, если требуется, например, проигрывать фоновую музыку или прокручивать небольшой анимационный клип. Enabled Buttons позволяет оставить видимыми некоторые кнопки, одновременно запретив их использование. Тип мультимедийного файла, который будет воспроизводиться, задается одним из двух возможных способов: явно в свойстве DeviceType (Тип устройства) или загрузкой файла на этапе проектирования (с использованием свойства fileName). В последнем случае в качестве типа устройства указывается значение dtAutoSelect (автоматическое определение типа в зависимости от расширения файла). Display задается объект, в котором будет демонстрироваться видео, обычно, для этого используется компонент TPanel. В Delphi 7 входит пример Coolstuf, содержащий два видеоклипа. Этот пример хранится в подкаталоге Demos\Coolstuf той папки, куда установлена система Delphi 7. AutoEnable Имеет значение True, если проигрыватель автоматически управляет состоянием своих кнопок. Например, когда клип закончен, кнопка Play становится недоступной, пока не будет выполнена команда Перемотка в начало. AutoOpen Имеет значение True, если при запуске выполняется автоматическое открытие устройства MCI, предназначенного для воспроизведения информации заданного типа. |
|
OleContainer контейнер OLE, основной компонент, обеспечивающий внедрение и связывание различных объектов в приложении. |
9 Динамический обмен данными - DDE
Динамический обмен данными (Dmamical Data Exchange DDE) это технология, появившаяся на заре Windows, но сохраняющая свое значение до сих пор, поскольку предоставляет удобный способ обмена данными между программами.
В этом диалоге программ одна, инициирующая диалог, называется клиентом, а другая, отвечающая на сообщения клиента сервером. Диалог ведется на заданную тему (topic). Данные, передаваемые от одной программы к другой, называются элементами данных (items). В диалоге могут также передаваться серверу некоторые команды макросы (macros). Этих основных понятий: клиент, сервер, тема, элемент данных в макрос достаточно, чтобы строить приложения, основанные на DDE. Всю сложную задачу обработки в процессе диалога множества сообщений Windows берет на себя Delphi, инкапсулируя все необходимые процедуры в четырех компонентах, расположенных в библиотеке на странице System: DdeClientConv, DdeClientltem, DdeServerConv и DdeServerltem. Первые два из них организуют работу клиента, а два вторые - работу сервера
10 Назначение и свойства компонентов страницы Dialogs
В состав Delphi включены простые компоненты (рисунок 6), реализующие стандартные диалоговые окна Windows.
Рисунок 6 Вид страницы Dialogs
Все компоненты стандартных диалогов со страницы Dialogs являются невизуальными компонентами, следовательно, их размещения на форме не имеет значения. При обращении к ним вызываются стандартные диалоги, вид которых зависит от версии Windows и настройки системы.
Основной метод, которым производится обращение к любому диалогу, - Execute. Эта функция открывает диалоговое окно и, если пользователь произвел в нем какой-то выбор, то функция возвращает true. При этом в свойствах компонента - диалога запоминается выбор пользователя, который можно прочитать и использовать в дальнейших операциях. Если же пользователь в диалоге нажал кнопку Отмена или клавишу Esc, то функция Execute возвращает false. Поэтому стандартное обращение к диалогу имеет вид:
- if <имя компонента-диалога> Execute then;
- <операторы, использующие выбор пользователя>.
Основные назначения и свойства компонентов страницы Dialogs представлены в таблице 7.
Таблица 7 - Компоненты страницы Dialogs
Вид |
Пояснение |
OpenDialog диалог «Открыть файл» и SaveDialog диалог «Сохранить файл как». Все свойства этих компонентов одинаковы, но их смысл различен для открытия и сохранения файлов. Внимание! Сами эти диалоги только позволяют указать, куда сохранять файл, или какой файл надо открыть. Команды открытия или сохранения должен написать сам разработчик. FileName имя выбранного пользователем файла, записанное в виде строки. Значение этого свойства можно задать и перед обращением к диалогу. Тогда оно появится в диалоге как значение по умолчанию в окне Имя файла Filter Типы искомых файлов, появляющиеся в диалоге в выпадающем списке Тип файла. В процессе проектирования это свойство проще всего задать с помощью редактора фильтров. В его левой панели Filter Name записывается тот текст, который увидит пользователь в выпадающем списке Тип файла диалога. А в правой панели Filter записываются разделенные точками с запятой шаблоны фильтра. Filterlndex определяет номер фильтра, который будет по умолчанию показан пользователю в момент открытия диалога. Например, значение Filterlndex = 1 задает по умолчанию первый фильтр. InitialDir определяет начальный каталог, который будет открыт в момент начала работы пользователя с диалогом. DefaultExt определяет значение расширения файла по умолчанию. Title позволяет вам задать заголовок диалогового окна, подсказывающий пользователю ожидаемые действия. Например, «Укажите имя открываемого файла». Событие OnCanClose возникает при нормальном закрытии пользователем диалогового окна после выбора файла. При отказе пользователя от диалога - нажатии кнопки Отмена, клавиши Esc и т.д. событие OnCanClose не наступает. В обработке события OnCanClose можно произвести дополнительные проверки выбранного пользователем файла. |
Продолжение таблицы 7
Вид |
Пояснение |
Можно также написать обработчики событий OnFolderChange - изменение каталога, OnSelectionChange - изменение имени файла, OnTypeChange - изменение типа файла. В этих обработчиках предусматривают обычно какие-то сообщения пользователю. Пример использования диалога: - if OpenDialogl.Execute then begin; - FName := OpenDialogl.FileName; - Memo1.Lines.LoadFromFile(FName); end. Для создания команды «Сохранить как выполняется» рекомендуется перед вызовом диалога указать команду SaveDialogl.FileName := <Имя файла>; Если файл быт создан и еще не сохранялся, то это имя файла по умолчанию, а если он был открыт и изменен, то это его имя. |
|
OpenPictureDialog окно открытия рисунка и SavePictureDialog окно сохранения рисунка. Эти компоненты являются, соответственно, наследниками класса TOpenDialog и класса TSaveDialog. Диалоговые окна содержат дополнительную область для быстрого просмотра содержимого выбранного графического файла. |
|
FontDialog окно выбора шрифта. Компонент предназначен для вызова стандартного диалогового окна выбора шрифта, доступного в системе. Компонент имеет набор свойств, которые приведены ниже: - Device устройство, для которого отображается список доступных шрифтов. Возможные значения - fdScreen (экран), fdPrinter (принтер) и fdBoth (как экран, так и принтер); - Font выбранный пользователем шрифт (тип TFont); - MaxFontSize Максимальный размер шрифта, ограничивающий содержимое показываемого списка шрифтов; - MinFontSize Минимальный размер шрифта, ограничивающий содержимое показываемого списка шрифтов; - Options Дополнительные характеристики внешнего вида диалогового окна. Если, например, на форме имеется надпись Labell, то при щелчке на кнопке Button следующий обработчик вызовет диалоговое окно выбора шрифта. После того как пользователь сделает выбор, шрифт, которым сделана надпись, изменится. procedure TForml.ButtonlClick(Sender: TObject); begin if FontDialogl.Execute then Labell.Font.Assign(fontDialogl.Font); end; |
Продолжение таблицы 7
Вид |
Пояснение |
ColorDialog окно выбора цвета. С помощью данного компонента вызывается стандартное диалоговое окно выбора цвета. Color (тип ТСоlor) содержит выбранный пользователем цвет. CustomColors (тип TStrings) хранит в текстовом формате описание дополнительных пользовательских цветов. Цвет в этом формате задается шестью символами, определяющими в шестнадцатеричном виде значение цвета в соответствии с требованием цветовой системы RGB. Каждый байт задается двумя символами, например FFFFFF или 08ЕЕ08. B соответствует одной из составляющих цвета RGB. Options позволяет выполнять тонкие специфические настройки работы окна. PrintDialog, PrinterSetupDialog, PageSetupDialog Печать, Настройка принтера, Настройка параметров страницы печати. |
|
TPrinterSetupDialog, предназначен для настройки параметров работы принтера, не имеет оригинальных свойств, потому что эти настройки существенно различаются для разных видов принтеров. На основании этого компонента можно создавать свои собственные компоненты для конкретных принтеров. |
|
TPrintDialog отображает стандартное окно печати Windows. B нем можно задать различные параметры печати, которые определяются следующими свойствами диалога. |
|
PageSetupDialog позволяет настроить характеристики печатаемых страниц. Они задаются в свойствах Margin Bottom, MarginLeft, Margin Right, MarginTop (нижняя, левая, правая, верхняя границы печати), PageHeightH PageWidth (высота и ширина страницы), а также в свойстве Options, описывающем дополнительные параметры. Единицы измерения размеров задаются в свойстве Units. |
11 Назначение и свойства компонентов страницы Samples
Вид страницы Samples представлены на рисунке 7.
Рисунок 7 Вид страницы Samples
Основные назначения и свойства компонентов страницы Samples представлены в таблице 8.
Таблица 8 - Компоненты страницы Samples
Вид |
Пояснение |
Gauge отображение хода процесса. Используется для создания индикатора хода процесса в виде линейки, круговой диаграммы или текста. Аналог компонента ProgressBar. |
|
SpinEdit поле со счетчиком. Свойства компонента похожи на UpDown, только имеют другие имена: MinValue, MaxValue, Value. Компонент SpinEdit во многих отношениях удобнее, если не требуются такие возможности возможностей UpDown как нестандартное расположение кнопок, «закольцовывание» изменений и т.п. |
|
Calendar календарь на указанный месяц. Отображение календаря на указанный месяц. Основные свойства: Year, Month, Day. |
12 Обработка файлов
Для доступа к файлам чаще всего используется специальная файловая переменная. Она связывается с указанным файлом процедурой AssignFile.
Эта процедура имеет синтаксис:
procedure AssignFile(var F: File, S: string);
где F - файловая переменная любого типа,
S - строка, содержащая имя файла.
Открытие существующего файла осуществляется процедурой Reset, формат которой (кроме нетипизированных файлов) следующий:
procedure Reset(var F: File);
Файловая переменная F перед обращением к этой процедуре должна быть связана с файлом. Создание и открытие нового файла осуществляется процедурой Rewrite, формат которой (кроме нетипизированных файлов - см. разд. 14.14.2.3) следующий:
procedure Rewrite(var F: File);
После выполнения различных операций чтения и записи файл должен быть закрыт процедурой CloseFile:
procedure CloseFile(var F: File);
При работе с файлами, при чтении и записи в них каких-то данных возможны различные ошибки. Если не принять соответствующих мер, то эти ошибки приведут к прерыванию работы программы. Предотвратить это можно двумя путями.
Первый предполагает обработку исключений InOutError, поле errorcode которых содержит информацию о конкретном виде ошибки. Второй предполагает применение опции {$I-}, отключающей генерацию исключений ошибок ввода/вывода, и дальнейшее обращение к функции IOResull, возвращающей код ошибки и сбрасывающей его в 0 (так что повторное обращение к IOResuIt бессмысленно). После обработки операции ввода/вывода контроль ошибок можно снова включить опцией {$I+}. В этом случае общая организация работы с файлами строится примерно по такой схеме:
AssignFile (F, OpenDialogl.FileName);
{SI-}
Reset(F);
{SI+}
I:=IOResult;
if I <> 0 then <операторы обработки кода ошибки>
else ...
{SI+}
<операторы чтения или записи>
{SI-}
I:=IOResult;
if I <> 0 then <операторы обработки кода ошибки>
CloseFile(var F: File);
При операциях ввода/вывода проверять окончание файла можно функцией Eof(F: File), возвращающей true при достижении конца файла.
Различают файлы трех видов: текстовые, файлы, типизированные файлы и нетипизированные файлы.
Текстовые файлы состоят из последовательностей символов, разбитых на строки. В Object Pascal предопределен тип TextFile, соответствующий текстовому файлу. Таким образом, объявление файловой переменной может иметь вид:
var <Имя файловой переменной>: TextFile;
Запись данных в текстовый файл осуществляется процедурой
procedure Write(var F: TextFile; <список выражений>);
Выражения могут быть типов Char, Integer, Real, string, упакованных строк, Boolean. При этом может использоваться форматирование.
Например:
Write(F, 'Baм ', I, ' лет);
Аналогичная процедура Writeln отличается от Write только тем, что после записи пишет символ перехода на новую строку, т.е. Writeln формирует одну строку.
Чтение данных из текстового файла осуществляется последовательно от его начала процедурой
procedure Read(var F: TextFile; <список переменных>);
где в списке перечисляются переменные, в которые читаются данные из файла.
Read(F, S1, I, S2]; даст значение S1, равное «Вам», значение I, равное записанному числу лет, и значение S2, равное «лет».
Аналогичная процедура Readln отличается от Read только тем, что после чтения переводит текущую позицию в файле на новую строку. Если в процедуре Readln не задан список переменных, то она просто пропускает текущую строку и переходит к следующей.
Типизированные файлы являются двоичными файлами, содержащими последовательность однотипных данных. Объявление файловых переменных таких файлов имеет вид:
var <имя файловой переменной;»: file of <тип данных>;
Тип данных может быть не только простым типом, но и, например, типом записей. Так операторы:
type
PhoneEntry = record
Fans, Nam: string[20];
PhoneNumber: string[15];
Listed: Boolean;
end;
PhorieList = file of PhoneEntry;
объявляет типизированный файл, содержащий записи телефонных номеров.
Процедуры чтения и записи Read и Write не отличаются от рассмотренных ранее для текстовых файлов. Только типы выражений при записи и переменных при чтении должны соответство-вать объявленному типу данных файла. Процедур, аналогичных Readln и Writeln для типизированных файлов нет. Зато есть процедура Seek, позволяющая перемещаться по файлу не только последовательно, как в текстовых файлах, но сразу переходить к требуемому элементу. Ее синтаксис:
procedure Seek(var F: File, N: Longint);
где N номер элемента.
Эта процедура перемещает текущую позицию в файле на нужный элемент.
Имеется также функция FilePos: function FilePos(var F ) : Longint; , которая возвращает текущую позицию в файле.
Пример выполнения практического задания
Задание №
Введите строку и букву. Выведите, сколько раз буква встречается в строке. Добавьте меню, дублирующее кнопки.
Для решения задачи необходимо создать форму и разместить на ней два компонента Edit, три Button, три Label, один MainMenu. В инспекторе объектов надо изменить их свойства:
У компонентов Label в свойстве Caption задать необходимую подпись.
У компонентов Edit в свойстве Text удалить все.
У компонентов Button в свойстве Caption задать необходимую подпись Считать, Очистить, Закрыть.
Двойным щелчком по компоненту MainMenu был вызван редактор меню и в нем создан пункт Файл, а в нем три пункта: Считать, Очистить, Закрыть.
Для того чтобы в Edit2 могли внести только одну букву надо выделить компонент и в инспекторе объектов на закладке Events для события KeyUp (отпускание нажатой клавиши) написать код:
procedure TForm1.Edit2KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
var s:string;
begin
s:=Edit2.Text; //считываем имеющийся текст
if Length(s)>1 then //если его длин больше 1 символа
s:=s[length(s)];//все заменяем последним символом
Edit2.Text:=s;//заносим в Edit символ
end;
Двойным щелчком по компоненту Button1 был вызван редактор кода, в нем написан следующий код для решения задачи:
procedure TForm1.Button1Click(Sender: TObject);
var s,s2:string;
i,n:integer;
begin
s:=Edit2.Text;//Запоминаем символ
s2:=Edit1.Text; Запоминаем текст
n:=0;//Обнуляем счетчик символов
for i:=1 to Length(s2) do//перебираем номера символов в строке
if s[1]=s2[i] then n:=n+1; //Если текущий символ равен искомому то увеличиваем счетчик
Label1.Caption:='Символ ' + s[1]+ ' встречается '+inttostr(n)+ ' раз';//вывод результата
end;
Двойным щелчком по компоненту Button2 был вызван редактор кода, в нем написан следующий код для очистки:
procedure TForm1.Button3Click(Sender: TObject);
begin
Edit2.Text:='';
Edit1.Text:='';
Label1.Caption:='';
end;
Для выхода:
procedure TForm1.Button2Click(Sender: TObject);
begin
form1.Close;
end;
Двойным щелчком по компоненту MainMemu1 был вызван редактор меню, в нем выделен первый пункт и в инспекторе объектов на закладке Events для события onClick выбран Button1Click. Аналогично для остальных.
Работающая форма с результатами представлена на рисунке 8:
Рисунок 8 Форма с результатами
Таблица 9 Варианты домашней контрольной работы № 2 по дисциплине «Основы алгоритмизации и
программирования»
Предпоследняя цифра шифра |
Последняя цифра шифра |
|||||||||
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
|
0 |
27, 57, 65, 117, 127 |
26, 44, 79, 100, 132 |
18, 49, 63, 111, 137 |
17, 48, 69, 106, 137 |
22, 60, 70, 113, 131 |
7, 55, 83, 92, 127 |
19, 41, 77, 106, 141 |
24, 53, 88, 100, 137 |
23, 38, 76, 112, 140 |
19, 51, 87, 91, 121 |
1 |
8, 59, 83, 97, 135 |
13, 52, 75, 107, 128 |
20, 35, 90, 113, 139 |
14, 59, 75, 116, 147 |
2, 50, 64, 101, 126 |
26, 39, 79, 102, 139 |
16, 32, 72, 117, 134 |
30, 54, 70, 94, 143 |
22, 59, 86, 104, 125 |
28, 55, 65, 109, 146 |
2 |
12, 56, 76, 98, 149 |
22, 31, 86, 96, 130 |
19, 40, 88, 115, 121 |
13, 40, 84, 112, 134 |
11, 47, 73, 120, 129 |
23, 36, 74, 115, 150 |
18, 58, 67, 105, 136 |
21, 57, 90, 114, 139 |
3, 40, 89, 95, 133 |
30, 53, 80, 102, 143 |
3 |
30, 58, 64,105, 136 |
5, 43, 77, 91, 138 |
25, 47, 62,106, 123 |
25, 58, 61, 96, 122 |
16, 32, 85,114, 145 |
1, 43, 72, 95, 125 |
6, 52, 75, 99, 122 |
7, 37, 71, 120, 148 |
28, 1, 62, 98, 142 |
23, 40, 84, 94, 131 |
4 |
15, 53, 72, 99, 142 |
21, 50, 66,118, 144 |
29, 45, 87, 95, 122 |
29, 42, 89,119, 142 |
12, 31, 88,100, 133 |
27, 57, 82,118, 123 |
4, 47, 78, 108, 124 |
10, 46, 63,111, 123 |
11,33, 61, 110, 131 |
10, 60, 75, 99, 127 |
5 |
4, 36, 71,116, 140 |
2, 39, 74,102, 150 |
23, 51, 81,110, 124 |
19, 35, 80,104, 130 |
6, 53, 71,103, 146 |
20, 37, 81, 91, 128 |
13, 43, 85, 93, 145 |
14, 34, 79,101, 130 |
9, 51, 74,116, 127 |
20, 44, 72, 95, 135 |
Продолжение таблицы 9
Предпоследняя цифра шифра |
Последняя цифра шифра |
|||||||||
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
|
6 |
10,33, 89,119, 134 |
24, 48, 78,120, 148 |
14, 60, 85,93, 147 |
30, 41, 62,98, 149 |
5, 38, 63,93, 143 |
9, 44, 66,91, 148 |
5, 55, 87,102, 126 |
29,42, 64,107, 146 |
1, 45, 73,97, 138 |
1, 45, 71,107, 148 |
7 |
1, 54, 80,101, 131 |
11, 32, 73,103, 146 |
3, 38, 61,114, 143 |
24, 51, 77,110, 138 |
21, 49, 86,117, 132 |
8, 46, 65,108, 140 |
15, 36, 83,103, 149 |
26, 56, 65,92, 150 |
25, 50, 81, 91, 147 |
26, 48, 76,110, 141 |
8 |
6, 41, 70,109, 145 |
17, 55, 69,92, 141 |
16, 37, 82,108, 126 |
18, 33, 68,94, 135 |
3,34, 76,107, 136 |
15, 54, 67,109, 144 |
17, 48, 66,118, 132 |
12, 49, 69,113, 121 |
20, 39, 82,96, 129 |
12, 34, 86,111, 150 |
9 |
7,34, 68,104, 133 |
28, 42, 67,112, 129 |
9, 46, 84,94, 125 |
28, 56, 87,105, 141 |
4, 52, 90,99, 124 |
10, 45, 78,110, 121 |
2, 60, 84,109, 128 |
27, 35, 80,119, 144 |
8, 44, 68,115, 135 |
2, 38, 81,112, 149 |