- •0Министерство образования тверской области
- •Практическое занятие 1
- •Теоретический материал
- •Порядок выполнения работы
- •Задания
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 2
- •Теоретический материал
- •Порядок выполнения работы
- •Задания
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 3
- •Теоретический материал
- •Порядок выполнения работы
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 4
- •Порядок выполнения работы
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 5
- •Теоретический материал
- •Порядок выполнения работы
- •Варианты прикладных задач:
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 6
- •Теоретический материал
- •Порядок выполнения работы
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 7
- •Теоретический материал
- •Порядок выполнения работы
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 8
- •Порядок выполнения работы
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 9
- •Теоретический материал
- •Порядок выполнения работы
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 10
- •Теоретический материал
- •Порядок выполнения работы
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 11
- •Порядок выполнения работы
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 12
- •Теоретический материал
- •Порядок выполнения работы
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 13
- •Теоретический материал
- •1.1. Эквивалентное разбиение
- •Порядок выполнения работы
- •Варианты заданий:
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 14
- •Теоретический материал
- •Общие характеристики качества программного средства
- •Длина программы
- •4. Объем программы
- •Потенциальный объем V*
- •Порядок выполнения работы
- •Практическое занятие 15
- •Порядок выполнения работы
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 16
- •Порядок выполнения работы
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 17
- •Порядок выполнения работы
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 18
- •Порядок выполнения работы
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 22
- •Теоретический материал
- •Теоретический материал
- •Порядок выполнения работы
- •Порядок выполнения работы
- •Одномерные массивы
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 23
- •Теоретический материал
- •Двумерные массивы (матрицы)
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 24
- •Теоретический материал
- •Порядок выполнения работы
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 25
- •Теоретический материал
- •Карандаш и кисть
- •Вывод текста
- •Методы вычерчивания графических примитивов
- •Ломаная линия
- •Окружность и эллипс
- •Прямоугольник
- •Многоугольник
- •Вывод иллюстраций
- •Битовые образы
- •Мультипликация
- •Метод базовой точки
- •Использование битовых образов
- •Загрузка битового образа из ресурса программы
- •Создание файла ресурсов
- •Подключение файла ресурсов
- •Просмотр "мультика"
- •Порядок выполнения
- •Контрольные вопросы
- •Список использованной литературы
- •Практическое занятие 26
- •Теоретический материал порядок выполнения
- •Контрольные вопросы
- •Список использованной литературы
Порядок выполнения работы
Изучите теоретический материал.
Разработайте алгоритмы указанных задач.
Запишите разработанные алгоритмы на языке программирования Pascal.
Отладьте программы в интегрированной среде разработки Pascal.
Оформите отчет о проделанной работе.
Ответьте на контрольные вопросы.
Задания
Напишите программу вычисления суммы: 1! + 2! + 3! + … + n!, используя функцию вычисления факториала числа k.
Для заданного n составить алгоритм вычисления значения выражения:
В программе использовать функцию.
Форма отчёта: Отчет выполняется в тетрадях по практическим работам в письменном виде. Программа отлаживается в IDE Borland Pascal и в виде файлов копируется на сетевой диск или на дискету.
Содержание отчета:
Тема работы.
Цель работы.
По каждому из заданий:
Условие задачи.
Постановка задачи.
Тестовые примеры.
Система оценки: двухбалльная.
Контрольные вопросы
В чём состоит отличие процедур и функций?
Чем синтаксически отличается описание процедуры от описания функции?
В каких случаях целесообразно использовать функции?
Какого типа может быть значение функции?
Какое количество значений возвращает функция?
Список использованной литературы
Голицина О.Л., Попов И.И. Основы алгоритмизации и программирования: Учебное пособие. - М.: Форум: Инфра-М, 2002.
Программирование на языке Паскаль: задачник / под ред. Усковой О.Ф. – СПб.: Питер, 2005.
Практическое занятие 3
Тема: «Программирование модулей и их использование»
Цели:
- закрепление изученного материала по основным операторам языка Pascal;
- формирование навыков записи алгоритмов для использования библиотек подпрограмм на языке Pascal.
Характер занятия: поисковый.
Форма организации: фронтальная.
Обеспечение занятия: ПК, ОС Windows, Borland Pascal, ручка, карандаш, линейка, тетрадь по практическим работам, дискета.
Требования к знаниям
Перед выполнением практической работы студент должен
знать:
- основные элементы IDE Borland Pascal и принципы работы в ней;
- основные операторы языка Pascal.
после выполнения практической работы студент должен
уметь:
- разрабатывать алгоритмы с использованием модулей.
Теоретический материал
Borland Pascal обеспечивает доступ к большому числу встроенных констант, типов данных, переменных, процедур и функций. Их количество велико, поэтому они разделены на связанные группы, называемые модулями. В этом случае можно использовать только те модули, которые необходимы в программе.
Используя модули, можно разбивать программу на отдельные части и компилировать их отдельно. Программный модуль (unit) представляет собой набор констант, типов данных, переменных, процедур и функций, которые могут совместно использоваться несколькими программами. Каждый модуль аналогичен отдельной программе на Паскале: он может иметь основное тело, которое вызывается перед запуском программы и осуществляет необходимую инициализацию.
Borland Pascal предоставляет пользователю ряд стандартных модулей, таких как System, Crt WinCrt и др. Они поддерживают программы Borland Pascal и все записаны в одну из трех библиотек исполняющей системы.
Структура модуля аналогична структуре программы, однако есть несколько существенных различий:
unit <идентификатор>;
interface
uses <список модулей>; { Необязательный }
{ глобальные описания }
implementation
uses <список_модулей>; { Необязательный }
{ локальные описания }
{ реализация процедур и функций }
begin
{ код инициализации }
end.
Заголовок модуля начинается зарезервированным словом unit, за которым следует имя модуля (идентификатор) точно так же, как и в случае имени программы. Следующим элементом в модуле является ключевое слово interface. Оно обозначает начало интерфейсной секции модуля - части, доступной всем другим модулям или программам, в которых он используется.
Программный модуль может использовать другие модули, для этого они определяются в операторе uses. Оператор uses (если он имеет место) может содержаться в двух местах. Во-первых, он может следовать сразу после ключевого слова interface. В этом случае любые константы и типы данных, описанные в интерфейсной секции этих модулей, могут использоваться в любом описании в интерфейсной части данного модуля.
Во-вторых, он может следовать немедленно за ключевым словом implementation. В этом случае все описания из этих модулей могут использоваться только в секции реализации.
Интерфейсная часть - "общедоступная" часть в модуле - начинается зарезервированным словом interface, следует сразу после заголовка модуля и заканчивается перед зарезервированным словом implementation. Интерфейс определяет, что является "видимым" (доступным) для любой программы (или модуля), использующей данный модуль.
В интерфейсной части (секции) модуля можно определять константы, типы данных, переменные, процедуры и функции. Как и в программе, они могут быть расположены в любом порядке, и секции могут встречаться повторно (программа может содержать секцию var, за которой следует секция const, а затем другая секция var).
Процедуры и функции, видимые для любой программы, использующей данный модуль, описываются в секции интерфейса, однако их действительные тела - реализации - находятся в секции реализации. В интерфейсной части перечисляются все заголовки процедуры и функции. Секция реализации содержит программную логику процедур и функций.
Секция реализации – начинается зарезервированным словом implementation. Все, что описано в секции интерфейса, является видимым в секции реализации: константы, типы, переменные, процедуры и функции. Кроме того, в секции реализации могут быть свои дополнительные описания, которые не являются видимыми для программ, использующих этот модуль. Программа не знает об их существовании и не может ссылаться на них или обращаться к ним. Однако, эти скрытые элементы могут использоваться "видимыми" процедурами и функциями, то есть теми подпрограммами, чьи заголовки указаны в секции интерфейса.
Оператор uses может содержаться в секции реализации (implementation) и должен непосредственно следовать за ключевым словом implementation.
Обычные процедуры и функции, описанные в интерфейсной секции, то есть те из них, которые не являются подставляемыми (inline), должны повторно указываются в секции реализации. Заголовок procedure/function должен быть или идентичным тому, который указан в секции интерфейса, или иметь более краткую форму. В случае краткой формы нужно набрать ключевое слово (procedure или function), а за ним указать имя подпрограммы (идентификатор). Затем подпрограмма должна содержать все свои локальные описания (метки, константы, типы, переменные и вложенные процедуры и функции), за которыми должно находиться основное тело самой подпрограммы.
Пример 1. Пусть в интерфейсной части указаны следующие описания:
procedure ISwap(var V1,V2 : integer);
function IMax(V1,V2 : integer) : integer;
Тогда Секция реализации будет иметь следующий вид:
procedure ISwap;
var Temp := integer;
begin
Temp:= V1; V1:= V2; V2:= Temp
end; {конец процедуры Swap}
function IMax(V1,V2 : integer) : integer;
begin
if V1 > V2
then IMax := V1
else IMax := V2
end; { конец функции Max }
Подпрограммы, локальные для секции реализации (то есть не описанные в секции реализации), должны иметь полный (несокращенный) заголовок procedure/function.
Обычно вся секция реализации модуля заключена между зарезервированными словами implementation и end. Однако, если перед end поместить зарезервированное слово begin, а между ними - операторы, то получившийся составной оператор, очень похожий на основное тело программы, становится секцией инициализации модуля (initialization).
Секция инициализации представляет собой место, где инициализируются структуры данных (переменных), которые использует программный модуль или которые он делает доступными программе, использующей данный модуль. Можно использовать эту секцию для открытия файлов, которые программа использует позднее.
При выполнении программы, использующей некоторый модуль, секция инициализации этого модуля вызывается перед запуском основного тела программы. Если программа использует более одного модуля, то секции инициализации всех модулей вызываются (в порядке, указанном в операторе uses в программе) перед тем, как выполнить основное тело программы.
Модули, которые использует программа, уже оттранслированы и хранятся, как машинный код, а не как исходный код на Паскале, поскольку они не являются включаемыми файлами. Даже интерфейсная секция хранится в специальном двоичном формате таблицы идентификаторов, используемом в Borland Pascal. Более того, определенные стандартные модули хранятся в специальном файле (TURBO.TPL, TPW.TPL или TPP.TPL) и автоматически загружаются в память вместе с Borland Pascal.
В результате использование одного или нескольких модулей очень незначительно увеличивает время компиляции программы (обычно менее, чем на секунду).
Фактически, если модуль скомпилирован, его использование сохраняет время при перекомпиляции. Поскольку компилятор не перекомпилирует модуль, пока он не изменяется, использование модулей в программе ускорит процесс ее построения.
Для использования специального модуля или набора модулей необходимо в начале программы поместить оператор uses, после которого указать список имен тех модулей, которые будут использоваться. Имена их должны разделяться запятыми:
program MyProg;
uses thisUnit, thatUnit, theOtherUnit;
Когда компилятор встречает такой оператор uses, он прибавляет информацию из секции интерфейса каждого модуля к таблице идентификаторов и присоединяет машинный код, представленный в секции реализации, к самой программе.
Модули присоединяются к таблице идентификаторов в указанном порядке. Порядок модулей в операторе uses значения не имеет.
Пример 3. Если модуль thisUnit использует thatUnit или наоборот, можно описать их в любом порядке, а компилятор определит, какой модуль нужно скомпоновать с программой MyProg первым. Фактически, если модуль thisUnit использует thatUnit, но MyProg не вызывает непосредственно ни одну из подпрограмм в модуле thatUnit, можно "скрыть" подпрограммы модуля thatUnit, опустив его в операторе:
uses:
unit thisUnit;
uses thatUnit;
.
.
.
program MyProg;
uses thisUnit, theOtherUnit;
.
.
.
В этом примере модуль thisUnit может вызывать любую подпрограмму модуля thatUnit, а программа MyProg может вызывать любую из подпрограмм модуля thisUnit или theOtherUnit. Однако, программа MyProg не может вызывать подпрограммы модуля thatUnit, поскольку thatUnit не указывается в операторе uses программы MyProg.
Если в программе не указан оператор uses, Borland Pascal в любом случае присоединит стандартный модуль System. Этот модуль обеспечит выполнение некоторых стандартных подпрограмм Borland Pascal, а также нескольких подпрограмм, специфических для Borland Pascal.
Как только включен модуль в программу, все константы, типы данных, переменные, процедуры и функции, описанные в секции интерфейса этого модуля, становятся доступными для вашей программы.
Пример 4. Имеется следующий модуль:
unit MyStuff;
interface
const MyValue = 915;
type MyStars = (Deneb,Antares,Betelgeuse);
var MyWord: string[20];
procedure SetMyWord(Sta : MyStars);
function TheAnswer: integer;
implementation
.
.
.
end.
Здесь в интерфейсной части модуля, та часть модуля, которая находится в интерфейсной секции, является видимой для программы (и может ею использоваться). С учетом этого ожно написать следующую программу:
program TestStuff;
uses MyStuff;
var I: integer;
AStar: MyStars;
begin
Writeln(myValue);
AStar := Deneb;
SetMyWord(AStar);
Writeln(MyWord);
I:= TheAnswer;
Writeln(I)
end.
После включения в программу оператора uses MyStuff можно ссылаться на все идентификаторы, описанные в интерфейсной секции модуля МyStuff (МyWord, МyValue и так далее).
Borland Pascal позволяет размещать в секции реализации оператор uses. В случае его присутствия оператор uses должен следовать непосредственно за ключевым словом implementation (аналогично тому, как в интерфейсной секции оператор uses должен следовать непосредственно за ключевым словом interface).
Размещение в секции реализации оператора uses позволяет "скрыть" внутренние детали модуля, поскольку используемые в секции реализации модули оказываются "невидимыми" для того, кто этот модуль использует. Более важным является то, что это позволяет вам строить взаимнозависимые модули.
Поскольку программные модули в Borland Pascal не обязаны иметь строго иерархическую структуру, то допускается использовать циклические ссылки на модули.
Модули библиотек исполняющей системы Borland Pascal загружаются в память вместе с Borland Pascal; всегда можно их использовать. Обычно библиотеки исполняющей системы (TURВО.TPL, TPW.TPL и TPP.TPL) находятся в том же каталоге, что и компилятор (TURBO.EXE. BPW.EXE и BP.EXE).
Для того чтобы написать модуль, содержащий некоторые полезные подпрограммы, и использовать эти подпрограммы в своих программах, необходимо написать модули и сохранить его под именем, заданным в заголовке модуля. Borland Pascal сохраняет файл с расширением .PAS, как и любой другой файл, созданный в редакторе Borland Pascal. В исходном файле может содержаться только один модуль.
Скомпилировать модуль можно двумя способами:
Скомпилировать модуль с помощью команды Compile|Compile. Вместо создания файла .EXE Borland Pascal создает файл .TPU, .TPW или .TPP.
Для компиляции программы, которая включает в себя оператор uses, использовать команду Compile|Make или Compile|Build. В зависимости от целевой платформы, создается файл .TPU, .TPW или .TPP.
Далее необходимо скопировать новый файл .TPU, .TPW или .TPP в каталог модулей, заданный в диалоговом окне Options|Directories, или использовать параметр командной строки /U при работе с компилятором режима командной строки.
Модуль помещен в заданный каталог модулей, то можно ссылаться на этот модуль, даже если он не находится в текущем каталоге или в библиотеках исполняющей системы.
После этого необходимо включить в любую программу, где надо использовать новый модуль, оператор uses.
Пример 6. Если новый модуль называется INTLIB.TPW, то в программе необходимо задать оператор следующего вида:
uses IntLib;
Чтобы найти модуль, имя которого указано в операторе uses, Borland Pascal проверяет его наличие в библиотеке исполняющей системы, загруженной в память во время инициализации.
Если модуль в библиотеке исполняющей системы отсутствует, то компилятор ищет его на диске, сначала в текущем каталоге, затем в каталогах, заданных в качестве каталогов модулей (Options|Directories). Компилятор предполагает, что имя файла совпадает с именем модуля, а расширение имени файла - это .TPU, .TPW или .TPP. Исходный текст модуля имеет расширение .PAS.
У модуля есть еще одна функция – разбивать большую программу на составные части. Два аспекта Borland Pascal способствуют использованию модулей в такой функции:
высокая скорость компиляции и компоновки;
способность работать с несколькими файлами одновременно, например, с программой и несколькими модулями.
Обычно большая программа разбивается на модули, которые группируют процедуры по их функциям.
