- •Структура описания лабораторной работы
- •Выполнение работы
- •Форма отчета
- •Основные сведения
- •Установка и запуск системы
- •Интерфейс системы
- •Меню и команды
- •Пункт File
- •Пункт Edit
- •Пункт Search
- •Пункт Run
- •Пункт Compile
- •Пункт Debug
- •Пункт Options
- •Пункт Window
- •Пункт Help
- •Страница Compiler Options окна свойств проекта
- •Страница Directories окна свойств проекта
- •Страница Preferences окна свойств проекта
- •Файлы проекта
- •Основные приемы работы в СП Borland Pascal
- •Создание новой программы
- •Работа с уже созданной программой
- •Использование средств отладки
- •Пошаговое выполнение программы
- •Просмотр значений переменных
- •Использование точек останова
- •Порядок выполнения работы
- •Контрольные вопросы
- •Основные сведения
- •Оператор присваивания
- •Составной оператор
- •Условный оператор
- •Оператор варианта
- •Ввод данных с клавиатуры
- •Вывод данных на экран
- •Пример выполнения
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа 3. Программы с циклами
- •Основные сведения
- •Оператор цикла с предусловием
- •Оператор цикла с постусловием
- •Оператор цикла с возрастающим параметром
- •Оператор цикла с убывающим параметром
- •Оператор прерывания цикла
- •Оператор продолжения цикла
- •Пример выполнения
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа 4. Использование массивов
- •Основные сведения
- •Описание массива
- •Пример выполнения
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа 5. Обработка символьных строк
- •Основные сведения
- •Описание строковых переменных
- •Операции над данными типа string :
- •Стандартные функции для обработки строк
- •Пример выполнения
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа 6. Использование процедур
- •Основные сведения
- •Пример выполнения
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа 7. Использование функций
- •Основные сведения
- •Пример выполнения
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа 8. Работа с текстовыми файлами
- •Основные сведения
- •Пример выполнения
- •Варианты заданий
- •Контрольные вопросы
- •Основные сведения
- •Пример выполнения
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа 10. Использование данных ссылочного типа
- •Основные сведения
- •Пример выполнения
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа 11. Создание и использование модулей
- •Основные сведения
- •Пример выполнения
- •Варианты заданий
- •Контрольные вопросы
- •Литература
– 36 –
2.Ввести неопределенное количество целых чисел и сформировать из них список. Создать второй список, состоящий из разностей соседних элементов первого списка и вывести его на экран.
3.Ввести неопределенное количество целых чисел и сформировать из них список. Найти минимальный элемент в списке и исключить его. Вывести полученную последовательность на экран.
4.Ввести неопределенное количество целых чисел и сформировать из них список. Найти максимальный и минимальный элементы списка, и их разность включить в список первым элементом. Вывести полученную последовательность чисел на экран.
5.Ввести неопределенное количество вещественных чисел и сформировать из них список. Найти сумму элементов списка и поставить ее первым элементом списка. Вывести полученную последовательность чисел на экран.
6.Ввести неопределенное количество вещественных чисел и сформировать из них список. Найти среднее арифметическое элементов списка и поставить найденное значение последним элементом в списке.
7.Ввести неопределенное количество целых чисел и сформировать из них список. Найти количество четных элементов в списке и включить его в список после последнего чётного элемента. Вывести полученную последовательность на экран.
8.Ввести неопределенное количество вещественных чисел и сформировать из них список. Найти среднее арифметическое отрицательных элементов списка и вставить его в список перед первым отрицательным элементом. Вывести полученную последовательность чисел на экран.
9.Ввести неопределенное количество целых чисел и сформировать из них список. Найти максимальный элемент в списке и поставить его на первое место в списке. Вывести полученную последовательность чисел на экран.
10.Ввести неопределенное количество целых чисел и сформировать из них список. Найти количество элементов списка, находящихся в диапазоне 0…100 и включить его в список перед последним элементом, входящим в этот диапазон. Вывести полученную последовательность на экран.
11.Ввести неопределенное количество вещественных чисел и сформировать из них список. Найти среднее арифметическое положительных элементов списка и вставить его в список после последнего положительного элемента. Вывести полученную последовательность на экран.
Контрольные вопросы
1.Указатель. Типизированный и нетипизированный указатели.
2.Операция разыменования.
3.Динамическая память. Куча.
4.Выделение и освобождение памяти.
5.Описание элемента односвязного списка.
6.Описание элемента двусвязного списка.
7.Что такое пустой список ? Каким образом инициализировать список?
8.В чем основные отличия односвязного и двусвязного списков ?
9.Особые ситуации при включении элемента в список.
10.Особые ситуации при исключении элемента из списка.
11.Реализация стека на основе односвязного списка.
12.Реализация очереди на основе односвязного списка.
Лабораторная работа 11. Создание и использование модулей
Основные сведения
Структура модуля:
– 37 –
unit имя_модуля; {заголовок модуля} interface {раздел интерфейса модуля}
uses имя_модуля1, имя_модуля2, …;{модули, используемые в разделе интерфейса} const
{описание внешних констант} type
{описание внешних типов} var
{описание внешних переменных} {заголовки внешних процедур и функций} implementation {раздел реализации модуля}
uses имя_модуля1, имя_модуля2, …;{модули, используемые в разделе реализации} const
{описание внутренних констант модуля} type
{описание внутренних типов модуля} var
{описание внутренних переменных модуля} {тексты внешних процедур и функций} label
{метки, используемые в разделе инициализации модуля} begin
{раздел инициализации модуля} end.
Имя файла, в котором находится модуль, должно совпадать с именем модуля. При компиляции модуля создается файл имя_модуля.TPU, который располагается в каталоге, заданном в пункте меню Options+Directories+EXE&TPU .
Для использования констант, типов, переменных и подпрограмм модуля необходимо в основную программу непосредственно за ее заголовком включить строку:
uses имя_модуля1,имя_модуля2,...;
Указанные в этой директиве модули Pascal будет искать в каталогах, заданных в пункте меню Options+Directories+Unit (можно задавать несколько каталогов, разделяя их точкой с запятой).
Необходимо помнить, что описанные в разделе интерфейса константы, типы и переменные привносятся в основную программу при подключении к ней модуля. Поэтому сугубо внутренние для модуля константы, переменные и типы следует описывать в разделе реализации.
Пример выполнения
Оформить в виде модуля вычисление следующих математических функций:
f1 (x, y) = sin x cos y +sin y cos x ;
x2 + y, при x < y , f2 (x, y) = x − y 2 , при x ≥ y ;
f3 (x) = tan x /(x2 +1) ;
f4 (x) = (x2 −3x +4) /(| x | +2) .
Написать программу, которая тестирует эти функции для значений, вводимых с клавиатуры.
{ Файл модуля MODUL.PAS } unit MODUL;
interface
function F1(X,Y:real): real; function F2(X,Y:real): real; function F3(X:real): real;
– 38 –
function F4(X:real): real;
implementation
function F1(X,Y:real): real; begin
F1:=sin(X)*cos(Y)+sin(Y)*cos(X) end; { F1 }
function F2(X,Y:real):real; begin
if X<+Y then F2:=sqr(X)+Y else F2:=X-sqr(Y)
end; { F2 }
function F3(X:real):real; begin
F3:=(sin(X)/cos(X))/(sqr(X)+1) end; { F3 }
function F4(X:real):real; begin
F4:=(sqr(X)-3*x+4)/(abs(X)+2) end; { F4 }
end.
{ Файл основной программы PRIMER.PAS } program PRIMER;
uses MODUL; var
X,Y: real; C: char;
begin repeat
writeln('Введите x и y'); readln(X,Y); writeln('F1(',X,',',Y,')=',F1(X,Y)); writeln('F2(',X,',',Y,')=',F2(X,Y)); writeln('F3(',X,')=',F3(X)); writeln('F4(',X,')=',F4(X)); writeln('Продолжить?(N-нет)'); readln(C)
until (C='N') or (C='n') end.
Варианты заданий
Для всех вариантов задание состоит в следующем:
•оформить в виде модуля подпрограммы, получающие в качестве параметров некоторые данный и производящие с ними определенные действия (действия и данные определяются вариантом задания);
•написать программу, которая использует подпрограммы этого модуля и тестирует их на данных, введенных с клавиатуры.
1. Параметры – строки. Действия:
•обмен между строками самого длинного слова первой строки на самое короткое слово
– 39 –
второй строки;
•возврат конкатенации слова первой строки, состоящего из наибольшего количества различных букв, и слова второй строки, состоящего из наименьшего количества различных букв;
•вставка в конец первой строки количество слов с четной длиной, а в конец второй – количество слов с нечетной длиной;
•удаление из первой строки слов, содержащихся во второй.
2.Параметры – строки. Действия:
•урезание более длинной строки до длины более короткой;
•добавление пробелов в более короткую строку до длины более длинной;
•конкатенация первых слов обеих строк;
•конкатенация последних слов обеих строк.
3.Параметры – строки. Действия:
•удаление из строки всех гласных;
•удаление из строки всех согласных;
•подсчет количества слогов в строке;
•подсчет количество слов в строке.
4.Параметр – массив из N целых чисел (N – константа модуля). Действия:
•нахождение минимального элемента;
•нахождение максимального элемента;
•нахождение суммы элементов массива;
•перестановка элементов массива в обратном порядке.
5.Параметр – массив из N целых чисел (N – константа модуля). Действия:
•упорядочение по возрастанию;
•упорядочение по убыванию;
•подсчет количества отрицательных элементов;
•подсчет количества положительных элементов.
6.Параметр – двумерный массив NxM (N и M – константы модуля). Действия:
•транспонирование относительно главной диагонали;
•транспонирование относительно побочной диагонали;
•нахождение минимального элемента;
•нахождение максимального элемента.
7.Параметр – двумерный массив NxM (N и M – константы модуля). Действия:
•сортировка строк по убыванию суммы элементов строк;
•сортировка строк по возрастанию суммы элементов строк;
•сортировка столбцов по убыванию суммы элементов столбцов;
•сортировка столбцов по возрастанию суммы элементов столбцов.
8.Параметр – двумерный массив NxM (N и M – константы модуля). Действия:
•обмен между массивами элементами, находящимися выше главной диагонали;
•обмен между массивами элементами четных строк;
•обмен между массивами элементами нечетных столбцов;
•обмен между массивами отрицательными элементами, стоящими на одном и том же месте в обоих массивах.
9.Параметры – строки. Действия:
•обмен между строками первыми словами;
•обмен между строками последними словами;
•обнуление более длинной строки;
•обнуление более короткой строки.
10.Параметр – двумерный массив NxM (N и M – константы модуля). Действия: