- •Структура описания лабораторной работы
- •Выполнение работы
- •Форма отчета
- •Основные сведения
- •Установка и запуск системы
- •Интерфейс системы
- •Меню и команды
- •Пункт File
- •Пункт Edit
- •Пункт Search
- •Пункт Run
- •Пункт Compile
- •Пункт Debug
- •Пункт Options
- •Пункт Window
- •Пункт Help
- •Страница Compiler Options окна свойств проекта
- •Страница Directories окна свойств проекта
- •Страница Preferences окна свойств проекта
- •Файлы проекта
- •Основные приемы работы в СП Borland Pascal
- •Создание новой программы
- •Работа с уже созданной программой
- •Использование средств отладки
- •Пошаговое выполнение программы
- •Просмотр значений переменных
- •Использование точек останова
- •Порядок выполнения работы
- •Контрольные вопросы
- •Основные сведения
- •Оператор присваивания
- •Составной оператор
- •Условный оператор
- •Оператор варианта
- •Ввод данных с клавиатуры
- •Вывод данных на экран
- •Пример выполнения
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа 3. Программы с циклами
- •Основные сведения
- •Оператор цикла с предусловием
- •Оператор цикла с постусловием
- •Оператор цикла с возрастающим параметром
- •Оператор цикла с убывающим параметром
- •Оператор прерывания цикла
- •Оператор продолжения цикла
- •Пример выполнения
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа 4. Использование массивов
- •Основные сведения
- •Описание массива
- •Пример выполнения
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа 5. Обработка символьных строк
- •Основные сведения
- •Описание строковых переменных
- •Операции над данными типа string :
- •Стандартные функции для обработки строк
- •Пример выполнения
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа 6. Использование процедур
- •Основные сведения
- •Пример выполнения
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа 7. Использование функций
- •Основные сведения
- •Пример выполнения
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа 8. Работа с текстовыми файлами
- •Основные сведения
- •Пример выполнения
- •Варианты заданий
- •Контрольные вопросы
- •Основные сведения
- •Пример выполнения
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа 10. Использование данных ссылочного типа
- •Основные сведения
- •Пример выполнения
- •Варианты заданий
- •Контрольные вопросы
- •Лабораторная работа 11. Создание и использование модулей
- •Основные сведения
- •Пример выполнения
- •Варианты заданий
- •Контрольные вопросы
- •Литература
– 27 –
10.Окружность на плоскости задается координатами x,y ее центра и радиусом r. Пусть заданы соответствующие характеристики пяти окружностей: (x1,y1,r1), (x2,y2,r2), ..., (x5,y5,r5). Найти среди этих окружностей все уединенные окружности, т.е. такие, которые не имеют общих точек ни с одной из остальных окружностей, не лежат целиком внутри и не заключают внутри себя какую-либо из остальных окружностей. Написать функции, проверяющие наличие общих точек у окружностей и включение одной окружности в другую.
11.Дано число a>0. Вычислить величину (3 a −6 a2 −1) /(1 + 7 3 + a ) . Корни k x вычислить с
точностью ε=0,0001 по итерационной формуле y0=1, yn+1 = yn + (x/(yn)k-1 - yn)/k, n=0,1,2,…
Написать функцию для вычисления корня.
Контрольные вопросы
1.Заголовок функции. Тип функции.
2.Основной выходной параметр функции и побочные эффекты.
3.Формальные и фактические параметры.
4.Параметры-значения и параметры-переменные.
5.Вызов функции и возврат из функции.
6.Передача фактических параметров по ссылке и по значению.
7.Возврат значения.
8.Глобальные и локальные данные подпрограмм. Области видимости.
Лабораторная работа 8. Работа с текстовыми файлами
Основные сведения
Текстовый файл состоит из строк. Строки разделяются символом CR (код 13) – «возврат каретки», который может быть объединен с символом LF (код 10) – «перевод строки». Конец текстового файла обозначается символом Ctrl+Z (код 26).
Файловая переменная для текстового файла определяется следующим образом:
var имя_файловой_переменной : text;
Процедуры и функции для работы с текстовыми файлами:
assign(var F:text; FileName:string) – связывает файловую переменную F с именем файла FileName ;
reset(var F:text) – открывает файл F только для чтения ;
rewrite(var F:text) – создает и открывает для записи новый файл, связанный с файловой переменной F ;
append(var F:text) – открывает существующий файл F для дозаписи; close(var F:text) – закрывает файл F ;
eof(var F:text):boolean – возвращает TRUE , если уже достигнут конец файла или FALSE
– в противном случае;
eoln(var F:text):boolean – возвращает TRUE , если указатель файла находится на символе конца строки или конца файла, FALSE – в противном случае:
read(var F:text; var V1; var V2; …) – чтение из файла F значений переменных V1, V2, ... ; readln(var F:text; var V1; var V2; …) – аналогична read, но после ввода всех перемен-
ных V1, V2, ... указатель файла перемещается в начало следующей строки;
write(var F:text; V1; V2; …) – вывод в текстовый файл F значений переменных V1, V2, ...
Элемент вывода имеет вид имя_переменной[:ширина[:точность]];
writeln(var F:text; V1; V2; …) – делает то же, что и write , после чего помещает в файл признак конца строки.
– 28 –
Пример выполнения
Открыть два текстовых файла. Один, ранее уже созданный, для чтения, другой, новый, для записи. Переместить содержимое первого файла во второй, вставляя '?' перед каждым пробелом и '!' после каждого пробела, а также вставляя признак конца строки после каждых 50 символов.
program PRIMER; var
fInp,fOut |
: text; |
{входной и выходной файлы} |
C |
: char; |
{текущий символ входного файла} |
I |
: integer; |
{счетчик символов текущей строки выходного файла} |
begin assign(fInp,'FOLD.TXT'); assign(fOut,'FNEW.TXT'); reset(fInp); rewrite(fOut);
I:=0;
while not eof(fInp) do begin while not eoln(fInp) do begin
read(fInp,C);
if C<>' ' then begin if I=50 then begin
writeln(fOut); {к новой строке выходного файла}
I:=0 {сброс счетчика символов текущей строки выходного файла} end;
write(fOut,C);
I:=I+1 end
else begin {встретился пробел} case I of
50: begin
writeln(fOut); write(fOut,'?'); write(fOut,' '); write(fOut,'!'); I:=3
end; 49: begin
write(fOut,'?'); writeln(fOut); write(fOut,' '); write(fOut,'!'); I:=2
end; 48: begin
write(fOut,'?'); write(fOut,' '); writeln(fOut); write(fOut,'!'); I:=1
end; else begin
write(fOut,'?'); write(fOut,' '); write(fOut,'!');
I:=I+3 end
end { case I of } end
end; { while not eoln(fInp) } readln(fInp)
end; { while not eof(fInp) } close(fInp);
– 29 –
close(fOut)
end.
Варианты заданий
1.Создать текстовый файл с произвольным содержимым. Поменять местами четные и нечетные строки файла (первую со второй, третью с четвертой и т.д.), а затем добавить в выходной файл строку, содержащую количество строк в файле.
2.Создать текстовый файл с произвольным содержимым. Вставить в начало каждой строки её порядковый номер и пробел, а затем дописать в конец файла строку, в которой указывается количество строк файла.
3.Создать текстовый файл с произвольным содержимым. Написать программу, которая изменяет файл таким образом, что каждое его слово, содержащее хотя бы одну цифру, заключается в скобки, а затем дописывает в конец файла строку, в которой указывается количество слов, заключенных в скобки. Под словом понимается любая последовательность символов, разделенная пробелом, концом строки или концом файла.
4.Создать текстовый файл с произвольным содержимым. Написать программу, которая заменяет каждую пустую строку файла на строку «Пустая строка», а затем дописывает к файлу строку, в которой указывается количество найденных (и замененных) пустых строк.
5.Создать текстовый файл, содержащий программу на языке Pascal. Написать программу, которая проверяет соответствие открывающих и закрывающих круглых скобок в программе. При обнаружении первой несоответствующей скобки её с двух сторон выделить символами ?. В конец файла дописать строку с результатом проверки: «Все в порядке» или «Обнаружено
несоответствие».
6.Создать текстовый файл с произвольным содержимым. Написать программу, которая удаляет пробелы в конце каждой строки файла (если они есть), а затем дописывает к файлу новую строку, в которой указывается количество удаленных пробелов.
7.Создать текстовый файл с произвольным содержимым. Переформатировать файл так, чтобы каждая его строка содержала 30 символов (кроме, возможно, последней), а затем добавить к файлу строку, в которой указать количество полных (по 30 символов) строк файла.
8.Создать текстовый файл с произвольным содержимым. Написать программу, которая меняет местами в файле четные и нечетные слова (первое со вторым, третье с четвертым и т.д.), а затем добавляет в конец файла строку, содержащую количество строк в файле. Под словом понимается любая последовательность символов, ограниченная пробелом, концом строки или концом файла.
9.Создать текстовый файл с произвольным содержимым. Написать программу, которая после каждого слова записывает в файл количество символов в этом слове, а после этого дописывает в конец файла строку, в которой указывается количество слов в файле. Под словом понимается любая непустая последовательность символов, ограниченная символами пробела, табуляции, конца строки или конца файла.
10.Создать текстовый файл с произвольным содержимым. Написать программу, которая заменяет в файле все буквосочетания аяна иеи дописывает в конец файла строку с указани-
ем найденного количества сочетаний ая.
11. Создать текстовый файл с произвольным содержимым. Написать программу, которая меняет порядок символов в каждой строке файла на противоположный, а затем добавляет в конец файла новую строку, в которой указывается количество символов в самой длинной строке файла.
Контрольные вопросы
1.Назначение процедуры assign ?
2.Отличие процедур rewrite и append ?
3.Типичный фрагмент последовательного чтения всего файла.
4.Назначение функции eof.
5.Вывод числовых переменных.
– 30 –
Лабораторная работа 9. Работа с типизированными файлами и записями
Основные сведения
Типизированный файл состоит из последовательности записей одной и той же структуры. Структура записи задается типом, который может быть как стандартным, так и заданным в программе. Запрещено создавать файлы файлов и файлы объектов, а также файлы структурированных компонентов, содержащих файлы и объекты. Записи файла нумеруются начиная с
0.
Файловая переменная для типизированного файла задается следующим образом:
var имя_файловой_переменной : file of тип_записи_файла;
Процедуры и функции для работы с типизированными файлами:
assign( var F; FileName:string ) – связывает файловую переменную F с именем файла
FileName ;
reset( var F ) – открывает существующий файл F для операций чтения и записи; rewrite( var F ) – создает новый файл F и открывает его для операций чтения и записи; close( var F ) – закрывает файл F ;
eof( var F ):boolean – возвращает TRUE, если достигнут конец файла, и FALSE – в противном случае;
read( var F; var X1; var X2; … ) – ввод данных из файла F в переменные X1, X2, …, тип которых должен совпадать с типом записи файла. После чтения записи указатель файла устанавливается на запись, следующую за последней прочитанной;
write( var F; X1; X2; … ) – вывод в файл F переменных X1, X2, …, тип которых должен совпадать с типом записи файла. После вывода каждой переменной указатель файла устанавливается на запись, следующую за только что выведенной;
filesize( var F ): longint – возвращает количество записей в открытом файле F ; filepos( var F ): longint – возвращает номер записи открытого файла F, на которой
находится указатель;
seek( var F; N: longint ) – устанавливает указатель в открытом файле F на запись с номером N ;
truncate( var F ) – усекает открытый файл F отбрасыванием всех его записей, начиная с текущей, до конца файла.
Запись – это тип данных, состоящий из набора компонентов, называемых полями. Поля могут быть любых допустимых в языке типов.
Описание типа записи и переменной записи:
type имя_типа_записи = record имя_поля_1: тип_поля_1; имя_поля_2: тип_поля_2;
...
имя_поля_N: тип_поля_N end;
var имя_переменной_записи:имя_типа_записи;
Обращение к полям переменной записи: имя_переменной_записи.имя_поля
Над полями записей можно выполнять любые действия, доступные для переменных типа соответствующего поля.
Пример выполнения
Имеется файл STUD.DAT, содержащий данные о студентах: фамилию, имя, отчество, номер