Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
АЛТАЙСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ.docx
Скачиваний:
11
Добавлен:
06.08.2019
Размер:
163.01 Кб
Скачать

Задание

Создайте в своей директории файл mycopy.prg наберите текст процедуры (или скопируйте) и тщательно прокомментируйте каждый шаг программы. Далее проведите несколько тестовых запусков теперь уже вашей функции копирования файлов и убедитесь, что она устойчиво работает в ситуациях:

– когда вы не указали параметров при вызове этой функции: =mycopy();

– когда вы указали неверное число параметров: =mycopy('f2');

– когда вы указали параметры не тех типов;

– когда вы указали имя несуществующего файла-источника;

– когда вы выбрали в качестве файла-цели уже существующий файл;

– когда вы вызвали функцию с правильными параметрами.

2. Функция, возвращающая строку из данного файла по ее номеру

Назовем эту функцию - str_from и, соответственно, файл с функцией str_from.prg. У функции должно быть два параметра - имя файла и номер строки. Эта функция должна работать примерно по такому сценарию:

1.    Проверить число передаваемых параметров, если число параметров меньше двух - выдать сообщение о том, как правильно вызывать функцию и завершить работу и вернуть пустую строку.

2.    Проверить тип параметров, если тип первого не текст или тип второго не число - выдать сообщение о том, как правильно вызывать функцию и завершить работу и вернуть пустую строку.

3.    Открыть файл, если файл не открывается - выдать сообщение, завершиться и вернуть пустую строку.

4.    Задать номер текущей строки равным нулю.

5.    Считать строку из файла и увеличить номер текущей строки на единицу.

6.    Если при считывании строк обнаружится конец файла - завершить работу и вернуть пустую строку.

7.    Как только номер считанной строки будет равен второму параметру - завершить работу и вернуть текущую строку.

8.    Если номер считанной строки не равен второму параметру - повторить с пункта e).

Примеры

function str_from

parameter file1,n

set talk off

do case

case parameters() <> 2

clear

? 'Функция возвращает из файла file1 строку с номером n1'

? 's=str_from(file1, n1)'

? 'Например: ? str_from("test.txt",4)'

return ''

case type("file1")<> "C"

clear

? 'Тип первого параметра не строка'

? 'Функция возвращает из файла file1 строку с номером n1'

? 's=str_from(file1, n1)'

? 'Например: ? str_from("test.txt",4)'

return ''

case type("n") <> "N"

clear

? 'Тип второго параметра не число'

? 'Функция возвращает из файла file1 строку с номером n1'

? 's=str_from(file1, n1)'

? 'Например: ? str_from("test.txt",4)'

return ''

endcase

nf = fopen(file1)

if nf < 0

? 'Файл '+ file1 + ' не открывается'

clear all

return ''

endif

n1=0

s=''

do while not feof(nf)

n1 = n1+1

s = fgets(nf)

if n1 = n

=fclose(nf)

return s

endif

enddo

? 'Достигнут конец файла '+file1

? 'В нем всего '+ alltrim(str(n1))+' строк'

=fclose(nf)

return ''

Вызывать данную функцию можно обычным образом из командного окна или из другой программы или процедуры.

Задание

Создайте в своей директории файл str_from.prg наберите текст процедуры (или скопируйте) и тщательно прокомментируйте каждый шаг программы. Далее проведите несколько тестовых запусков теперь уже вашей функции копирования файлов и убедитесь, что она устойчиво работает в ситуациях:

– когда вы не указали параметров при вызове этой функции s=str_from();

– когда вы указали неверное число параметров s=str_from('f2');

– когда вы указали параметры не тех типов s=str_from('rrr','444');

– когда вы указали имя несуществующего файла-источника;

– когда вы указали номер не существующей строки;

– когда вы вызвали функцию с правильными параметрами.