Прктикум. Практикум1 (1). Лабораторная работа 1. Установка и настройка операционной системы 5 Тема Обзор современных ос 29 Лабораторная работа 1 29 Работа с файлами в консоле ос windows 29
![]()
|
Тематический модуль № 1. Общие понятия и положения теории операционных систем Тема № 3. Обзор современных ОС Лабораторная работа № 7 Основные принципы функционирования ОС Linux Учебные цели: изучение принципов функционирования многопользовательской многозадачной операционной системы Linux; получение умений и навыков при работе с файлами и каталогами в терминале ОС Linux. Воспитательные цели: воспитание познавательного интереса, активности, целеустремленности, настойчивости, активности, наблюдательности, интуиции, сообразительности; формирование навыков самостоятельности и дисциплинированности; стимулировать активную познавательную деятельность обучаемых, способствовать формированию у них творческого мышления. Категория слушателей: 2,3 курс РТФ. Время: 90 мин. Место проведения: дисплейный класс. Материально-техническое обеспечение: персональный компьютер IBMPC с операционной системой Windows; ПЛАН практического ЗАНЯТИЯ
Литература: Основная: Горлов, С.К. (ВИ МВД РФ). Операционные системы [Текст] : Учеб.пособие / С. К. Горлов, М. В. Питолин, С. В. Белокуров. - Воронеж : ВИ МВД РФ, 2002. - 95с. Гордеев, А. В. Операционные системы [Текст] : [учебник]: доп. М-вом образования РФ / А. В. Гордеев. - 2-е изд. - СПб : Питер, 2009. - 415 с. : ил. - (Учебник для вузов). - Лит. : с. 406-408. - ISBN 978-5-94723-632-3 : 171-70. Дополнительная: Конфигурирование и сопровождение современных операционных систем [Текст]: учебное пособие/Т.В. Мещерякова, И.В. Атласов, Л.А. Обухова.-Воронеж: Воронежский институтМВД России, 2012.- 139 с.- ISBN 978-5-885973-069-9. Фигурнов, В.Э. IBM PC для пользователя : крат. курс [Текст] / В. Э. Фигурнов. - 7-е изд.,сокращ.версия. - М. : Инфра-М, 1999. - 479с. : ил. - ISBN 5-86225-471-4 : 32-00. Операционные системы [Текст]: учебное пособие / Воронежск. ин-т МВД РФ. - Воронеж : ВИ МВД России, 2010. - 158 с. - Лит.: с.157-158. - ISBN 978-5-88591-025-5 : 47-69. Краткие теоретические сведения Система включает следующие основные компоненты. Ядро. Выполняет функции управления памятью, процессорами. Осуществляет диспетчеризацию выполнения всех программ и обслуживание внешних устройств. Все действия, связанные с вводом/выводом и выполнением системных операций, выполняются с помощью системных вызовов. Системные вызовы реализуют программный интерфейс между программами и ядром. Имеется возможность динамического конфигурирования ядра. Диспетчер процессов Init. Активизирует процессы, необходимые для нормальной работы системы и производит их начальную инициализацию. Обеспечивает завершение работы системы, организует сеансы работы пользователей, в том числе, для удаленных терминалов. Интерпретатор команд Shell. Анализирует команды, вводимые с терминала либо из командного файла, и передает их для выполнения в ядро системы. Команды обычно имеют аргументы и параметры, которые обеспечивают модернизацию выполняемых действий. Shell является также языком программирования, на котором можно создавать командные файлы (shell-файлы). При входе в ОС пользователь получает копию интерпретатора shell в качестве родительского процесса. Далее, после ввода команды пользователем создается порожденный процесс, называемый процессом-потомком. Т.е. после запуска ОС каждый новый процесс функционирует только как процесс - потомок уже существующего процесса. В ОС Linux имеется возможность динамического порождения и управления процессами. Shell - интерпретатор в соответствии с требованиями стандарта POSIX поддерживает графический экранный интерфейс, реализованный средствами языка программирования Tcl/Tk. Обязательным в системе является интерпретатор Bash, полностью соответствующий стандарту POSIX. В качестве Shell может быть использована оболочка mc с интерфейсом, подобным Norton Commander. Сетевой графический интерфейс X-сервер (X-Windows). Обеспечивает поддержку графических оболочек. Графические оболочки KDE, Gnome. Отличительными свойствами KDE являются: минимальные требования к аппаратуре, высокая надежность, интернационализация. Базовые библиотеки KDE (qt, kde-libs) признаны одними из лучших продуктов по созданию графического интерфейса, обеспечивают простое написание программ с использованием передовых технологий. Gnome имеет развитые графические возможности, но более требователен к аппаратным средствам. Сетевая поддержка NFS, SMB, TCP/IP.NFS - программный комплекс РС-NFS (Network File System) для выполнения сетевых функций. РС-NFS ориентирован для конкретной ОС персонального компьютера (PC) и включает драйверы для работы в сети и дополнительные утилиты. SMB - сетевая файловая система, совместимая с Windows NT. TCP/IP - протокол контроля передачи данных (Transfer Control Protocol/Internet Protocol). Сеть по протоколам TCP/IP является неотъемлемой частью ОС семейства UNIX. Поддерживаются любые сети, от локальных до Internet, с использованием только встроенных сетевых средств. Инструментальные средства программирования. Основой средств программирования является компилятор GCC или его экспериментальные версии EGCS и PGCC для языков С и С++; модули поддержки других языков программирования (Obective C, Фортран, Паскаль, Modula-3, Ада, Java и др.); интегрированные среды и средства визуального проектирования: Kdevelop, Xwpe; средства адаптации привязки программ AUTOCONFIG, AUTOMAKE. Запустите виртуальную машину с операционной системой UBUNTU указанную преподавателем. Регистрация пользователя в системе Для входа пользователя в многопользовательскую операционную систему необходимо зарегистрироваться в качестве пользователя. Для этого нужно после сообщения Login: ввести системное имя пользователя, например, "user". Если имя задано верно, выводится запрос на ввод пароля: Password: наберите пароль "12345" и нажмите клавишу Enter. Вы получили доступ к ресурсам ОС UBUNTU. Выход из системы: exit - окончание сеанса пользователя. Выполнение простых команд Формат команд в ОС LINUX следующий: имя команды [аргументы] [параметры] [метасимволы] Имя команды может содержать любое допустимое имя файла; аргументы - одна или несколько букв со знаком минус (-); параметры - передаваемые значения для обработки; метасимволы интерпретируются как специальные операции. В квадратных скобках указываются необязательные части команд. Введите команду echo, которая выдает на экран свои аргументы: echo good morning и нажмите клавишу Enter. На экране появится приветствие "goodmorning" – аргумент команды echo.Командный интерпретатор shellвызвал команду echo, реализованную в виде программы на языке СИ, и передал ей аргументы. После этого интерпретатор команд вывел знак-приглашение. Синтаксис команды echo: Команда помещает в стандартный вывод свои аргументы, разделенные пробелами и завершаемые символом перевода строки. При наличии флага -n символ перевода строки исключается. who [am i] - получение информации о работающих пользователях. В квадратных скобках указываются аргументы команды, которые можно опустить. Ответ представляется в виде таблицы, которая содержит следующую информацию: - идентификатор пользователя; - идентификатор терминала; - дата подключения; - время подключения. date - вывод на экран текущей даты и текущего времени. cal [[месяц]год] - календарь; если календарь не помещается на одном экране, то используется команда cal год | more и клавишей пробела производится постраничный вывод информации. man <название команды> - вызов электронного справочника об указанной команде. Выход из справочника - нажатие клавиши Q. Команда man man сообщает информацию о том, как пользоваться справочником. tty - сообщение имени специального файла стандартного вывода, соответствующего терминалу пользователя. cat <имя файла> - вывод содержимого файла на экран. Команда cat > text.1 создает новый файл с именем text.1, который можно заполнить символьными строками, вводя их с клавиатуры. Нажатие клавиши Enter создает новую строку. Завершение ввода – нажатие Ctrl – d (Ctrl - c). Команда cat text.1 > text.2 пересылает содержимое файла text.1 в файл text.2. Слияние файлов осуществляется командой cat text.1 text.2 > text.3. ls [-alrstu] [имя] - вывод содержимого каталога на экран. Если аргумент не указан, выдается содержимое текущего каталога. Аргументы команды: -a - выводит список всех файлов и каталогов, в том числе и скрытых; -l - выводит список файлов в расширенном формате, показывая тип каждого элемента, полномочия, владельца, размер и дату последней модификации; - r - выводит список в порядке, обратном заданному; - s - выводит размеры каждого файла; - t - перечисляет файлы и каталоги в соответствии с датой их последней модификации; - u - перечисляет файлы и каталоги в порядке, обратном их последней модификации. rm <имя файла> - удаление файла (файлов). Команда rm text.1 text.2 text.3 удаляет файлы text.1, text.2, text.3. Другие варианты этой команды - rm text.[123] или rm text.[1-3]. wc [имя файла] - вывод числа строк, слов и символов в файле. clear - очистка экрана. Файловая структура системы LINUX В операционной системе LINUX файлами считаются обычные файлы, каталоги, а также специальные файлы, соответствующие периферийным устройствам (каждое устройство представляется в виде файла). Доступ ко всем файлам однотипный, в том числе, и к файлам периферийных устройств. Такой подход обеспечивает независимость программы пользователя от особенностей ввода/вывода на конкретное внешнее устройство. Файловая структура LINUX имеет иерархическую древовидную структуру. В корневом каталоге размещаются другие каталоги и файлы, включая 5 основных каталогов: bin - большинство выполняемых командных программ и shell - процедур; tmp - временные файлы; usr - каталоги пользователей (условное обозначение); etc - преимущественно административные утилиты и файлы; dev - специальные файлы, представляющие периферийные устройства; при добавлении периферийного устройства в каталог /dev должен быть добавлен соответствующий файл (черта / означает принадлежность корневому каталогу). Текущий каталог - это каталог, в котором в данный момент находится пользователь. При наличии прав доступа, пользователь может перейти после входа в систему в другой каталог. Текущий каталог обозначается точкой (.); родительский каталог, которому принадлежит текущий, обозначается двумя точками (..). Полное имя файла может включать имена каталогов, включая корневой, разделенных косой чертой, например: /home/student/file.txt. Первая косая черта обозначает корневой каталог, и поиск файла будет начинаться с него, а затем в каталоге home, затем в каталоге student. Один файл можно сделать принадлежащим нескольким каталогам. Для этого используется команда ln (link): ln <имя файла 1> <имя файла 2> Имя 1-го файла - это полное составное имя файла, с которым устанавливается связь; имя 2-го файла - это полное имя файла в новом каталоге, где будет использоваться эта связь. Новое имя может не отличаться от старого. Каждый файл может иметь несколько связей, т.е. он может использоваться в разных каталогах под разными именами. Команда ln с аргументом -s создает символическую связь: ln -s <имя файла 1> <имя файла 2> Здесь имя 2-го файла является именем символической связи. Символическая связь является особым видом файла, в котором хранится имя файла, на который символическая связь ссылается. LINUX работает с символической связью не так, как с обычным файлом - например, при выводе на экран содержимого символической связи появятся данные файла, на который эта символическая связь ссылается. В LINUX различаются 3 уровня доступа к файлам и каталогам: 1) доступ владельца файла; 2) доступ группы пользователей, к которой принадлежит владелец файла; 3) остальные пользователи. Для каждого уровня существуют свои байты атрибутов, значение которых расшифровывается следующим образом: r – разрешение на чтение; w – разрешение на запись; x – разрешение на выполнение; - – отсутствие разрешения. Первый символ байта атрибутов определяет тип файла и может интерпретироваться со следующими значениями: - – обычный файл; d – каталог; l – символическая связь; в – блок-ориентированный специальный файл, который соответствует таким периферийным устройствам, как накопители на магнитных дисках; с – байт-ориентированный специальный файл, который может соответствовать таким периферийным устройствам как принтер, терминал. В домашнем каталоге пользователь имеет полный доступ к файлам (READ, WRITE, EXECUTE; r, w, x). Атрибуты файла можно просмотреть командой ls -l и они представляются в следующем формате: d rwx rwx rwx | | | | | | | | Доступ для остальных пользователей | | | Доступ к файлу для членов группы | | Доступ к файлу владельца | Тип файла (директория) Пример. Командой ls -l получим листинг содержимого текущей директории student: - rwx --- --- 2 student 100 Mar 10 10:30 file_1 - rwx --- r-- 1 adm 200 May 20 11:15 file_2 - rwx --- r-- 1 student 100 May 20 12:50 file_3 После байтов атрибутов на экран выводится следующая информация о файле: - число связей файла; - имя владельца файла; - размер файла в байтах; - дата создания файла (или модификации); - время; - имя файла. Атрибуты файла и доступ к нему, можно изменить командой: chmod <коды защиты> <имя файла> Коды защиты могут быть заданы в числовом или символьном виде. Для символьного кода используются: знак плюс (+) - добавить права доступа; знак минус (-) - отменить права доступа; r,w,x - доступ на чтение, запись, выполнение; u,g,o - владельца, группы, остальных. Коды защиты в числовом виде могут быть заданы в восьмеричной форме. Для контроля установленного доступа к своему файлу после каждого изменения кода защиты нужно проверять свои действия с помощью команды ls -l. Примеры: chmod g+rw,o+r file.1 - установка атрибутов чтения и записи для группы и чтения для всех остальных пользователей; ls -l file.1 - чтение атрибутов файла; chmod o-w file.1 - отмена атрибута записи у остальных пользователей; >letter - создание файла letter. Символ > используется как для переадресации, так и для создания файла; cat- вывод содержимого файла; cat file.1 file.2 > file.12 - конкатенация файлов (объединение); mv file.1 file.2 - переименование файла file.1 в file.2; mv file.1 file.2 file.3 directory - перемещение файлов file.1, file.2, file.3 в указанную директорию; rm file.1 file.2 file.3 - удаление файлов file.1, file.2, file.3;. cp file.1 file.2 - копирование файла с переименованием; mkdir namedir - создание каталога; rm dir_1 dir_2 - удаление каталогов dir_1 dir_2; ls [acdfgilqrstv CFR] namedir- вывод содержимого каталога; если в качестве namedir указано имя файла, то выдается вся информация об этом файле. Значения аргументов: - l –- список включает всю информацию о файлах; - t – сортировка по времени модификации файлов; - a – в список включаются все файлы, в том числе и те, которые начинаются с точки; - s – размеры файлов указываются в блоках; - d – вывести имя самого каталога, но не содержимое; - r – сортировка строк вывода; - i – указать идентификационный номер каждого файла; - v – сортировка файлов по времени последнего доступа; - q – непечатаемые символы заменить на знак ?; - с – использовать время создания файла при сортировке; - g – то же что -l, но с указанием имени группы пользователей; - f – вывод содержимого всех указанных каталогов, отменяет флаги -l, -t, -s, -r и активизирует флаг -а; - С – вывод элементов каталога в несколько столбцов; - F – добавление к имени каталога символа / и символа * к имени файла, для которых разрешено выполнение; - R – рекурсивный вывод содержимого подкаталогов заданного каталога. cd pwd - вывод имени текущего каталога; grep [-vcilns] [шаблон поиска] <имя файла> - поиск файлов с указанием или без указания контекста (шаблона поиска). Значение ключей: - v – выводятся строки, не содержащие шаблон поиска; - c – выводится только число строк, содержащих или не содержащих шаблон; - i – при поиске не различаются прописные и строчные буквы; - l – выводятся только имена файлов, содержащие указанный шаблон; - n – перенумеровать выводимые строки; - s – формируется только код завершения. Примеры. 1. Напечатать имена всех файлов текущего каталога, содержащих последовательность "student" и имеющих расширение .txt: grep -l student *.txt 2. Определить имя пользователя, входящего в ОС LINUX с терминала tty23: who | grep tty23 Группирование команд Группы команд или сложные команды могут формироваться с помощью специальных символов (метасимволов): & - процесс выполняется в фоновом режиме, не дожидаясь окончания предыдущих процессов; ? - шаблон, распространяется только на один символ; * - шаблон, распространяется на все оставшиеся символы; | - программный канал - стандартный вывод одного процесса является стандартным вводом другого; > - переадресация вывода в файл; < - переадресация ввода из файла; ; - если в списке команд команды отделяются друг от друга точкой с запятой, то они выполняются друг за другом; && - эта конструкция между командами означает, что последующая команда выполняется только при нормальном завершении предыдущей команды ( код возврата 0 ); || - последующая команда выполняется только, если не выполнилась предыдущая команда ( код возврата 1 ); () - группирование команд в скобки; { } - группирование команд с объединенным выводом; [] - указание диапазона или явное перечисление ( без запятых); >> - добавление содержимого файла в конец другого файла. Примеры. who | wc - подсчет количества работающих пользователей командой wс (word count - счет слов); cat text.1 > text.2 - содержимое файла text.1 пересылается в файл text.2; mail student < file.txt - электронная почта передает файл file.txt всем пользователям, перечисленным в командной строке; cat text.1,text.2 - просматриваются файлы text.1 и text.2; cat text.1 >> text.2 - добавление файла text.1 в конец файла text.2; cc primer.c & - трансляция СИ - программы в фоновом режиме. Имя выполняемой программы по умолчанию a.out. cc -o primer.o primer.c - трансляция СИ-программы с образованием файла выполняемой программы с именем primer.o; rm text.* - удаление всех файлов с именем text; {cat text.1; cat text.2} | lpr - пpосмотp файлов text.1 и text.2 и вывод их на печать; ps [al] [number] - команда для вывода информации о процессах: -a - вывод информации обо всех активных процессах, запущенных с вашего терминала; -l - полная информация о процессах; number - номер процесса. Команда ps без параметров выводит информацию только об активных процессах, запущенных с данного терминала, в том числе и фоновых. На экран выводится подробная информация обо всех активных процессах в следующей форме: F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 1 S 200 210 7 0 2 20 80 30 703a 03 0:07 cc 1 R 12 419 7 11 5 20 56 20 03 0:12 ps F - флаг процесса (1 - в оперативной памяти, 2 - системный процесс, 4 - заблокирован в ОЗУ, 20 - находится под управлением другого процесса, 10 - подвергнут свопингу); S - состояние процесса (O - выполняется процессором , S - задержан, R - готов к выполнению, I - создается); UID - идентификатор пользователя; PID - идентификатор процесса; PPID - номер родительского процесса; C - степень загруженности процессора; PRI - приоритет процесса, вычисляется по значению переменной NICE и чем больше число, тем меньше его приоритет; NI - значение переменной NICE для вычисления динамического приоритета, принимает величины от 0 до 39; ADDR - адрес процесса в памяти; SZ - объем ОЗУ, занимаемый процессом; WCHAN - имя события, до которого процесс задержан, для активного процесса - пробел; TTY - номер управляющего терминала для процесса; TIME - время выполнения процесса; CMD - команда, которая породила процесс. nice [-приращение приоритета] команда[аргументы] - команда изменения приоритета. Каждое запущенное задание (процесс) имеет номер приоритета в диапазоне от 0 до 39, на основе которого ядро вычисляет фактический приоритет, используемый для планирования процесса. Значение 0 представляет наивысший приоритет, а 39 - самый низший. Увеличение номера приоритета приводит к понижению приоритета, присвоенного процессу. Команда nice -10 ls -l увеличивает номер приоритета, присвоенный процессу ls -l на 10. renice 5 1836 - команда устанавливает значение номера приоритета процесса с идентификатором 1836 равным 5. Увеличить приоритет процесса может только администратор системы. kill [-sig] <идентификатор процесса> - прекращение процесса до его программного завершения. sig - номер сигнала. Sig = -15 означает программное (нормальное) завершение процесса, номер сигнала = -9 - уничтожение процесса. По умолчанию sig= -9. Вывести себя из системы можно командой kill -9 0. Пользователь с низким приоритетом может прервать процессы, связанные только с его терминалом. mc - вызов файлового менеджера (программы - оболочки) MidnightCommander, аналогичного NortonCommander. sort[-dr] - сортировка входных файлов и вывод результата на экран. Порядок выполнения работы Ознакомиться с теоретической частью к лабораторной работе. Определить день недели, в который Вы родились. Получить подробную информацию обо всех активных процессах. Используя редактор или непосредственно в терминале, создать два текстовых файла (с расширением TXT) и командой САТ просмотреть их на экране. Получить справку по команде САТ и направьте ее в файл. Полученные файлы объединить в один файл и его содержимое просмотреть на экране. Создать новую директорию и переместить в нее полученные файлы. Вывести полную информацию обо всех файлах и проанализировать уровни доступа. Добавить для всех трех файлов право выполнения членам группы и остальным пользователям. Просмотреть атрибуты файлов. Создать еще один каталог. Установить дополнительную связь объединенного файла с новым каталогом, но под другим именем. Создать символическую связь. Сделать текущим новый каталог и вывести на экран расширенный список информации о его файлах. Произвести поиск заданной последовательности символов в файлах текущей директории и получить перечень соответствующих файлов. Получить информацию об активных процессах и имена других пользователей. Сдать отчет о работе и удалить свои файлы и каталоги. . Получить информацию о работающих пользователях, подсчитать их количество и запомнить в файле. Объединить текстовые файлы в единый файл и посмотреть его на экране. Посмотреть приоритет своего процесса и уменьшить скорость его выполнение за счет повышения номера приоритета. Удалить свои файлы и выйти из системы. Задание на самостоятельную работу Подготовиться к лабораторному занятию по ТМ № 1 ЛЗ. № 4.1 «Создание интерфейса программы в среде визуального программирования Delphi». Контрольные вопросы: 1. Перечислите основные функции и назначение многопользовательской многозадачной операционной системы LINUX и ее отличительные особенности от однопрограммной системы DOS. 2. Какое назначение имеет ядро системы и интерпретатор команд? 3. В чем заключается понятие "процесс" и какие операции можно выполнить над процессами? 4. Как задаются и выполняются простые и сложные команды? 5. Какие функции выполняет командный интерпретатор Shell? Тематический модуль № 1. Общие понятия и положения теории операционных систем Тема № 4. Интерфейс ОС с пользователями Лабораторное занятие № 1 Создание интерфейса программы в среде визуального проектирования Delphi» Учебные цели: изучение структуры программы и типов данных в среде визуального проектирования Delphi; получение умений и навыков создания простых программ в среде визуального проектирования Delphi. Воспитательные цели: воспитание познавательного интереса, активности, целеустремленности, настойчивости, активности, наблюдательности, интуиции, сообразительности; формирование навыков самостоятельности и дисциплинированности; стимулировать активную познавательную деятельность обучаемых, способствовать формированию у них творческого мышления. Категория слушателей: 2 курс РТФ. Время: 90 мин. Место проведения: дисплейный класс. Материально-техническое обеспечение: персональный компьютер IBMPC с операционной системой Windows; среда разработки приложений Delphi ПЛАН практического ЗАНЯТИЯ
Литература: Основная: Горлов, С.К. (ВИ МВД РФ). Операционные системы [Текст] : Учеб.пособие / С. К. Горлов, М. В. Питолин, С. В. Белокуров. - Воронеж : ВИ МВД РФ, 2002. - 95с. Гордеев, А. В. Операционные системы [Текст] : [учебник]: доп. М-вом образования РФ / А. В. Гордеев. - 2-е изд. - СПб : Питер, 2009. - 415 с. : ил. - (Учебник для вузов). - Лит. : с. 406-408. - ISBN 978-5-94723-632-3 : 171-70. Дополнительная: Конфигурирование и сопровождение современных операционных систем [Текст]: учебное пособие/Т.В. Мещерякова, И.В. Атласов, Л.А. Обухова.-Воронеж: Воронежский институтМВД России, 2012.- 139 с.- ISBN 978-5-885973-069-9. Фигурнов, В.Э. IBM PC для пользователя : крат. курс [Текст] / В. Э. Фигурнов. - 7-е изд.,сокращ.версия. - М. : Инфра-М, 1999. - 479с. : ил. - ISBN 5-86225-471-4 : 32-00. Операционные системы [Текст]: учебное пособие / Воронежск. ин-т МВД РФ. - Воронеж : ВИ МВД России, 2010. - 158 с. - Лит.: с.157-158. - ISBN 978-5-88591-025-5 : 47-69. Краткие теоретические сведения Основные понятияDelphi – среда визуального программирования. Визуальное программирование базируется на объектно-ориентированной технологии. Структурной единицей визуального программирования, основным «строительным элементом» для программы является компонент. Компонент – это разновидность класса, который представлен пиктограммой на палитре компонентов Delphi, может быть визуально перенесен в программу и имеет набор свойств, которые можно определять, не изменяя текста программ. В этом суть визуального программирования. (В отличие от языка Turbo-Pascal, классом в Delphi называется объектовый тип переменных, а объектом называется экземпляр класса. Например, тип Kursant – это класс, а курсант Иванов – конкретный объект, экземпляр класса. Как и любой класс, компонент характеризуется полями, свойствами и методами. В Delphi вместо полей обычно используются свойства. Свойство – это разновидность поля класса, обращение к которому автоматически приводит к вызову метода чтения/записи поля. (Напомним, что хорошим стилем в объектно-ориентированном программировании считается обращение к полям только через методы). Кроме того, компонент имеет перечень событий, на которые он способен реагировать (например, нажатие клавиши, щелчок кнопкой мыши и др.). Задача программиста – грамотно написать обработчики событий, отвечающие за реакцию компонента на определенное событие. Компоненты бывают визуальными и невизуальными. Первые предназначены для организации интерфейса с пользователем (кнопки, строки редактирования, переключатели, списки и т.д.). Они видны на экране во время выполнения программы. Невизуальные компоненты служат для доступа к системным ресурсам, например, драйверам баз данных. Во время работы приложения они, как правило, не видны. Формой называется визуальный компонент, имеющий свойства окна Windows (или просто окно Windows). На форме размещаются другие визуальные компоненты – кнопки, строки редактирования и др. Форм в приложении может быть несколько. Одна из них – главная. Закрытие главной формы означает завершение программы. Каждая форма представлена двумя файлами - файлом визуального описания формы (бинарный файл с расширением .dfm) и модулем с исходным текстом на языке Pascal (текстовый файл с расширением .pas), содержащим обработчики событий для компонентов этой формы. Формы и модули объединены в проект. Проект – это совокупность файлов, из которых Delphi создает приложение. Проект оформляется в виде головной программы на Паскале, содержащей ссылки на файлы всех форм и модулей. Файл проекта имеет расширение .dpr. В состав интегрированной среды разработчика входят, прежде всего, следующие основные элементы (рис.1.1). Главное меню. Напоминает главное меню в Turbo-Pascal c некоторыми изменениями и дополнениями, типичными для Windows-программ. Панель инструментов. Содержит кнопки «быстрого доступа», дублирующие некоторые часто используемые команды меню. Палитра компонентов. Содержит пиктограммы, представляющие компоненты Delphi. Палитра для удобства разделена на несколько страниц с закладками: Standard, Additional и др. Для размещения представленных компонентов на форме необходимо «щелкнуть мышью» на пиктограмме и затем «щелкнуть мышью» в нужном месте формы. Окно формы. Здесь надо разместить используемые программой визуальные и невизуальные компоненты. Окно редактирования модуля. Содержит тексты модулей, связанных с формами. Модули для разных форм находятся на отдельных страницах с закладками. Переключиться из окна редактирования в окно соответствующей формы и обратно можно с помощью клавиши <F12>. Инспектор объектов. С его помощью можно устанавливать значения свойств компонентов и задавать их реакцию на стандартные события. Состоит из двух страниц. На первой странице (Properties) приведен список свойств компонентов, на второй (Events) приведен список событий, на которые компонент может реагировать. Свойства и события указываются всегда для выделенного компонента на форме. Компонент выделяется щелчком мыши, при этом появляется характерное обрамление. ![]() Рис. 1.1. Этапы создания программыПроцесс создания любого Windows-приложения на Delphi включает в себя следующие этапы. 1. Создание эскиза формы. На форме размещаются необходимые визуальные и невизуальные компоненты. Соответствующие форме модули .pas и .dfm Delphi генерирует самостоятельно. Для каждого размещенного компонента Delphi заносит в описание класса формы поля, содержащие указатели на объекты-экземпляры компонентов. Экземпляры компонентов будут созданы в памяти во время выполнения программы методом-конструктором формы. (Все переменные объектового типа в Delphi являются динамическими, т.е. представляют собой указатели. Однако для упрощения программирования Delphi «скрывает» этот факт, обозначая и указатели, и созданные экземпляры одинаково, без применения символа ^.) По умолчанию имена экземпляров отличаются от названия класса цифрой: класс TButton – объекты Button1, Button2 и т.д. На палитре компонентов буква T в названии компонента опущена, хотя в описании класса компонента она обязательна. 2. Установка значений свойств размещенных компонентов, таких как размер, цвет, надписи, содержание и т.д. Изменение свойств здесь происходит чаще всего с помощью инспектора объектов. Размеры и местоположение компонентов можно изменить мышью (методом перетаскивания), а удалить выделенный компонент - нажатием клавиши <Delete>. Все свойства можно также установить программно с помощью оператора присваивания. Различайте свойства Name и Caption. Name – это идентификатор объекта в программе, а Caption – визуальный текст или заголовок на объекте. Поэтому далее, говоря «создайте кнопку Button1 с надписью Старт», мы будем подразумевать «разместите на форме компонент TButton и присвойте его свойству Name значение Button1 и свойству Caption значение Старт». Заметим, что в инспекторе объектов при вводе строк кавычки не указываются. 3. Указание реакций компонентов на действия пользователя или другие события в системе. Например, что программа должна делать, если пользователь нажал на кнопку с надписью Exit. Этот этап требует уже программирования. Каждый компонент имеет перечень событий, на который он умеет реагировать. Но может он отреагировать только тогда, когда в момент события он был выделен, находился в фокусе, т.е. когда событие произошло с этим компонентом. В Delphi термин «событие» трактуется двузначно. Первая трактовка (событие в среде Windows) соответствует названию. Кроме того используется понятие события компонента. Событием компонента называется его свойство процедурного типа, которому надо присвоить адрес метода, вызываемого для обработки соответствующего события Windows. Назначение события компонента можно понять по его названию: OnClick (щелчок мышью), OnDblClick (двойной щелчок), OnKeyPress (нажатие клавиши) и т.д. Чтобы сопоставить событию его метод-обработчик, необходимо два раза щелкнуть мышью в инспекторе объектов на странице Events по пустому полю рядом с названием события. При этом Delphi автоматически сгенерирует заготовку метода, куда программист должен записать необходимые, по его мнению, операторы. Названия обработчиков событий строятся по определенным правилам: приставка On заменяется именем (значением свойства Name) компонента-«соучастника» события, с указанием класса текущей формы, например, для события OnClick щелчка по кнопке Button1 название будет иметь вид: procedure TForm1.Button1Click. Таким образом, в названии обработчика зафиксировано как название события, так и имя объекта, на котором оно произошло. Для каждого компонента имеется так называемое событие по умолчанию. Например, для Button – это OnClick. Если дважды щелкнуть по объекту, Delphi создаст заготовку обработчика такого события. Итак, весь код программы оказывается сосредоточен в обработчиках событий. Разумеется, эти обработчики могут вызывать и другие, независимые процедуры, в том числе, хранящиеся в других, традиционных модулях, а также «чужие» обработчики событий. По сравнению с большинством программ для MS-DOS, программы для Windows имеют иную, «параллельную» структуру. Не вдаваясь в детали, ее можно представить как цикл ожидания событий, внутри которого события анализируются и вызывается соответствующий обработчик: case событие of событие 1: Обработчик 1; событие 2: Обработчик 2; . . . событие N: Обработчик N; end; Delphi скрывает от программиста эту структуру, оставляя ему лишь написание обработчиков. «Функциональность», т.е. алгоритм расчетов для прикладной задачи, также размещается в обработчике события. Выбор события, которое должно инициировать расчеты, остается за программистом. Например, это может быть двойной щелчок по форме, щелчок по кнопке «Старт» и т.п. Изложенная методика известна под названием программирования, управляемого событиями. Программы и модулиDelphi предлагает для создания программы мощные визуальные инструментальные средства программирования и сама генерирует систематически необходимый код. Паскаль использует модули, чтобы создать библиотечные модули многократного пользования. Модуль – поставщик констант, типов данных, переменных и процедур. Модуль дает возможность разработчику программного обеспечения создавать большие программы, которые могут легко компоноваться и модифицироваться. Модуль Паскаля имеет заголовок unit, за которым следуют три части: интерфейс (interface), блок реализации (implementation) и блок инициализации. Заголовок модуля определяет имя модуля, которое появляется в операторе uses других модулей и программ. Часть интерфейса сообщает компилятору, какая часть модуля является доступной для клиентов модуля (то есть для других модулей и программ). Часть реализации содержит локальные объявления и детализированную реализацию процедур и функций. Часть инициализации содержит операторы, которые позволяют модулю инициализировать экспортируемые переменные. Общий синтаксис модуля: Unitname; Interface Uses
Const
Type
Var
Implementation Uses
Const
Type
Var
[Begin End. Классы и объектыDelphi позволяет объявлять классы, которые играют жизненно важную роль в создании и управлении формами и их управляющими элементами. Класс – категория объектов, которые совместно используют одни и те же свойства и операции. Можно думать о классе как о супер-записи, которая объединяет поля и методы. Поля описывают состояние объекта, в то время как метод определяет, как объект управляется. Общий синтаксис класса: Type TclassName = Class public protected private end; Объявление класса имеет три возможных раздела, которые определяют доступность полей и методов. Раздел public объявляет поля и методы, не имеющие никаких ограничений доступа – экземпляры классы и классы-потомки могут иметь доступ к этим полям и методам. Раздел protected объявляет поля и методы, имеющие некоторые ограничения доступа – экземпляры классы и классы-потомки могут иметь доступ к этим полям и методам. Раздел private объявляет поля и методы, имеющие серьезные ограничения доступа – экземпляры классы и классы-потомки к ним обращаться не могут. Поля класса содержат данные, которые определяют атрибуты экземпляров класса. Методы класса – процедуры и функции, которые манипулируют полями и возвращают результаты, основанные на текущих значениях полей. Важно отметить, что методы класса автоматически имеют доступ ко всем полям этого класса. Объекты – это экземпляры классов. Объект объявляется в операторе var точно так же, как другие типы переменных. Каждый объект имеет собственный набор полей класса и может обращаться только к его публичным полям. Аналогично, только публичные методы класса могут применяться к объекту. Объектно-ориентированное программирование (ООП) подразумевает управление объектами путем посылки им сообщений. Сообщение указывает объекту выполнить задачу. Объект ищет метод, чье имя соответствует такому сообщению, и применят этот метод. Таким образом, ООП-сообщение определяет, что делать объекту, в то время как метод определяет, как управлять объектом. Паскаль использует операцию точки, чтобы обратиться к публичным полям объекта и также посылать сообщение объекту. Для того чтобы поддерживать форму, Delphi использует модули Паскаля. Методические рекомендации по созданию программы арифметического калькулятора: Для практического изучения синтаксического модуля, в качестве примера рассмотрим листинг программы создания калькулятора, используя компоненты, находящиеся на закладках Standard и Additional. Запустите Delphi. Подпишите форму (Form1) заголовком "Калькулятор". Для этого нужно в поле Caption инспектора объектов вписать слово Калькулятор. Во время того, как вы будете вписывать слово, оно автоматически будет прописываться в заголовок формы вместо надписи Form1. Добавьте на форму поле, в которое будет выводиться результат. Для этого используйте компонент Edit (поле для ввода), который находится на закладке Standard. Теперь установите его свойства в инспекторе объектов. Свойству Text присвойте значение 0 (именно это свойство содержит текст, находящийся в поле для ввода). Кроме того, свойству ReadOnly (только чтение) присвойте значение true (истина). Это необходимо для того, чтобы во время работы вашей программы пользователь не мог вводить символы напрямую, без помощи кнопок, в это поле. Добавьте на форму две кнопки Button1 и Button2 из закладки Standard панели компонентов. Свойству Caption первой кнопки присвоим значение "Сброс" а второй "Выход". Первая кнопка будет сбрасывать результат вычислений, а вторая позволит выйти из программы. Теперь нужно добавить еще несколько кнопок для ввода чисел и арифметических действий. Для этого используйте кнопки быстрого доступа SpeedButton. Найдите этот компонент на закладке Additional панели компонентов. Расположите четыре ряда по шесть кнопок на форме. В результате получится форма следующего вида: ![]() Последовательно присвойте свойству Caption для каждой кнопки значения: 0,1,2,3,4,… а также арифметические операции и операции работы с памятью: ![]() Заметим, что кнопки работы с памятью позволяют запомнить любое число, а затем выдать его. Названия кнопок соответствуют следующим действиям: СП - стереть память; ИП - выдать значение из памяти; П- - поместить число в память со знаком минус и сложить его с содержимым памяти; П+ - поместить число в память и сложить его с содержимым памяти. Вы можете расположить кнопки так, как это вам больше нравится. Ведь это ваше приложение! Написание программного кода: Кнопки Сброс и Выход. Выполните двойной щелчок по кнопке Сброс (или щелкните один раз, затем перейдите в окно инспектора объектов и выберите закладку Events (события), затем выполните двойной щелчок напротив надписи OnClick). Создание кода обнуления: procedure TForm1.Button1Click(Sender: TObject); begin Edit1.Text:='0'; end; Таким образом, при нажатии на кнопку, в поле для ввода Edit1 будет записано значение 0. Для кнопки Выход напишите следующий код: procedure TForm1.Button2Click(Sender: TObject); begin Form1.Close; end; При нажатии на эту кнопку, форма Form1 закроется. Запустите вашу программу при помощи клавиши Создание обработчиков события нажатия кнопки для всех остальных кнопок. Для кнопки 9: procedure TForm1.SpeedButton3Click(Sender: TObject); begin if Edit1.Text<>'0' then Edit1.Text:=Edit1.Text+'9' else Edit1.Text:='9'; end; Здесь сначала проводится проверка значения, находящегося в поле для ввода. Если оно равно нулю, то в поле просто вписывается нужная цифра вместо нуля. Если же там уже не нулевое значение, то приписывается эта цифра справа от уже имеющегося числа. Создайте аналогичный код, как и для кнопки 9, для остальных цифровых кнопок (кроме кнопки 0), за исключением того, что вместо числа 9 везде поставьте число, соответствующее названию кнопки, например для кнопки 1: procedure TForm1.SpeedButton3Click(Sender: TObject); begin if Edit1.Text<>'0' then Edit1.Text:=Edit1.Text+'1' else Edit1.Text:='1'; end; Теперь напишите код для кнопки 0: procedure TForm1.SpeedButton19Click(Sender: TObject); begin if Edit1.Text<>'0' then Edit1.Text:=Edit1.Text+'0' end; Здесь, если в поле для ввода стоит ноль, то к нему ничего не добавляется, иначе, если значение поля для ввода не равно нулю, то приписывается ноль справа. Запустите программу ( Арифметические операции Для написания кода арифметических операций необходимо введение вспомогательных переменных. Пока попробуем работать с числами целого типа данных. В дальнейшем код можно легко переписать для действительных чисел. Операция сложения двух чисел: Код должен описывать выполнение следующих действий: по щелчку на кнопке ![]() ![]() Для этого добавьте переменную a в раздел описания переменных модуля Unit1 (это в самом начале модуля, в разделе interface): var Form1: TForm1; a: integer; Пусть она пока будет целой (integer). Теперь нужно при нажатии кнопки ![]() procedure TForm1.SpeedButton22Click(Sender: TObject); begin a:=StrToInt(Edit1.Text); Edit1.Text:='0'; end; Функция StrToInt преобразует строковое значение (тип string) в целое (тип integer). Обратная функция (преобразующая целое значение в строковое) - это функция IntToStr. Теперь, при нажатии на кнопку ![]() procedure TForm1.SpeedButton23Click(Sender: TObject); begin Edit1.Text:=IntToStr(StrToInt(Edit1.Text)+a); end; Таким образом, строка преобразуется в число, складываем с переменной a, преобразуем число в строку и помещаем результат в поле для ввода. Аналогичным образом напишите коды для остальных арифметических операций. Для этого введем еще одну переменную целого типа, например f, в зависимости от значения которой будет выполнятся требуемое действие при нажатии кнопки ![]() begin a:=StrToInt(Edit1.Text); Edit1.Text:='0'; f:=1; end; Код для кнопки равно примерно будет выглядеть следующим образом: begin if (f=1) then Edit1.Text:=IntToStr(StrToInt(Edit1.Text)+a); if (f=2) then Edit1.Text:=IntToStr(a-StrToInt(Edit1.Text)); if f=3 then Edit1.Text:=IntToStr(a*StrToInt(Edit1.Text)); end; или сase f of 1: Edit1.Text:=IntToStr(StrToInt(Edit1.Text)+a); 2: Edit1.Text:=IntToStr(a-StrToInt(Edit1.Text)); 3: Edit1.Text:=IntToStr(a*StrToInt(Edit1.Text)); End; Конечно, вышеприведенный код не лишен недостатков. Однако цель нашей лабораторной работы проиллюстрировать возможности, предоставляемые средой Delphi и изучить некоторые возможности стандартных компонентов Delphi. Задание на самостоятельную работу Подготовиться к лабораторному занятию по ТМ № 1 ЛЗ. № 4.2 «Разработка пользовательского интерфейса с использованием программы EaSynth ForeUI». |