Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
6-8 по АЯ и ОП.doc
Скачиваний:
1
Добавлен:
06.11.2018
Размер:
576.51 Кб
Скачать

Индивидуальные задания

  1. В двух предложениях найти и удалить совпадающие слова.

  2. В предложении найти слово и удалить, состоящее из наибольшего количества гласных букв.

  3. Расположить в предложении слова в порядке возрастания длины слова.

  4. В предложении найти и удалить все однокоренные слова. Корень слова также задан с клавиатуры отдельной строкой.

  5. Удалить в предложении все повторные вхождения слов и распечатать получившееся предложение.

  6. Найти и удалить в предложении слово, состоящее из наибольшего количества разных букв.

  7. Слова предложения, содержащие две или более одинаковые буквы переместить в другое предложение.

  8. Расположить слова, входящие в предложение, в алфавитном порядке.

  9. Удалить из предложения все предлоги. Список предлогов задан во втором предложении.

  10. Все буквы каждого слова в предложении записать в обратном порядке и распечатать получившееся предложение.

  11. Во всех словах предложения удалить гласные буквы и распечатать получившееся предложение.

  12. Дополнить каждое слово предложения знаком нижнего подчеркивания так, чтобы его длина была равна длине самого длинного слова.

  13. Проверить на совпадение два предложения. Количеством пробелов между словами пренебрегать. Знаки препинания - учитывать.

  14. Удалить в предложении все слова, имеющие символы цифр и распечатать получившееся предложение.

  15. Предложение состоит из записи символов цифр, например:

123434 53423 2344 6564.

Расположить слова в порядке возрастания чисел.

Тема №7. Файловый ввод-вывод.

Задание. Измените программы по индивидуальным заданиям по темам №5 и №6, так чтобы из файла считывалось несколько блоков данных (массивов или предложений), каждое из которых обрабатывалось по разработанному ранее алгоритму.

При рассмотрении данной темы подразумевается освоение студентами следующих вопросов:

  1. Перенаправление потоков стандартного ввода и стандартного вывода средствами операционной системы.

  2. Текстовые файлы в языке Паскаль.

  3. Параметры, передаваемые в программу из командной строки

(ParamCnt, ParamStr).

  1. Типизированные файлы в языке Паскаль.

  2. Нетипизированные файлы языка Паскаль.

1. Для перенаправления стандартного ввода и стандартного вывода необходимо убедится, что программа не использует модуль управления монитором и клавиатурой (CRT), а также, что в результате компиляции программы на внешнем носителе создается исполняемый файл (для операционной системы Windows – это файл с расширением «exe», для операционной системы Unix – без расширения). Например, если исходный текст программы был в файле 6.pas, то после компиляции будет образован файл 6.exe.

Перед выполнением программы необходимо подготовить в текстовом редакторе файл с теми исходными данными, которые обычно вводились с клавиатуры. Например, это будет файл 6.txt. Запуск программы на исполнение производится из командной строки, причем можно заменить один или оба потока стандартного направления передачи данных. Вид командной строки:

имя_программы <файл_входных_данных >файл_выходных_данных

Командная строка для приведенных в качестве примера файлов запишется в виде:

6.exe <6.txt >6_1.txt

Задание: продемонстрируйте перенаправление ввода-вывода в командной строке.

2. При работе с текстовым файлом необходимо сделать изменения только в двух подпрограммах: подпрограмме ввода предложения (Input) и распечатки результата (PrintResult). А в основной части программы введите цикл для считывания и обработки нескольких предложений.

В качестве примера рассмотрите программу копирования одного текстового файла в другой:

var

s : string; // строка текста

Fi, Fo : Text; // файловые переменные

begin

Assign ( Fi, '7.pas' ); // установить соответствие переменной Fi файлу 7.pas

Reset ( Fi ); // открыть файл для чтения

Assign ( Fo, '7.txt' ); // установить соответствие переменной Fo файлу 7.txt

Rewrite ( Fo ); // открыть файл для записи

while not ( eof(Fi) ) do // цикл повторяет пока не закочится файл Fi

begin

Readln ( Fi, s); // читать строку из файла

Writeln ( Fo, s ); // записать строку в файл

end;

Close ( Fo ); // закрыть файл Fo

Close ( Fi ); // закрыть файл Fi

end.

3. Для передачи в командной строке параметров в программу используются две функции: ParamCount, возвращающая количество параметров (строк в командной строке), и ParamStr(Num), принимающая в качестве параметра Num номер параметра командной строки и возвращающая строку под этим номером. Используя эти функции можно, например, сделать такую программу, которая сможет не только копировать файлы, но и добавлять к одному текстовому файлу другой. Какие необходимо выполнить действия, а также имена файлов будут задаваться в командной строке. Основная часть программы будет содержать анализ командной строки, который в приведенном ниже примере состоит только лишь в контроле количества передаваемых параметров и выборе в соответствии с этим имен файлов, указанных в командной строке.

Program p7_1;

// Подпрограмма копирования файла

procedure CopyFile ( var Fi, Fo : Text );

var

s : string;

begin

while not ( eof(Fi) ) do

begin

Readln ( Fi, s); Writeln ( Fo, s );

end;

Close ( Fo ); Close ( Fi );

end;

// Подпрограмма открытия файла

procedure OpenFile ( var F : Text; Name : string; Mode : char );

begin

Assign (F, Name);

case Mode of

'r' : Reset ( F );

'w' : Rewrite ( F );

'a' : Append ( F );

end;

end;

var

Fi, Fo : Text; Name1, Name2 : string;

begin

// Анализ командной строки

if ParamCount = 2 then

begin

Name1 := ParamStr ( 1 );

Name2 := ParamStr ( 2 );

OpenFile ( Fo, Name2, 'w');

end;

if ParamCount = 3 then

begin

Name1 := ParamStr ( 2 );

Name2 := ParamStr ( 3 );

OpenFile ( Fo, Name2, 'a');

end;

OpenFile ( Fi, Name1, 'r');

CopyFile ( Fi, Fo );

end.

Если после компиляции данной программы исполняемый файл был под именем p7_1.exe, то командная строка может быть для «простого» копирования одного файла в другой (первая строка) или для добавления текста первого файла в конец второго файла. Еще раз отметим, что приведенный пример программы намеренно не содержит подробного анализа командной строки, а показывает вариант использования параметров командной строки.

p7_1.exe file1 file2

p7_1.exe append file1 file2

Задание: в программу по теме №6 добавьте обработку командной строки.

4. Для типизированных и нетипизированных файлов приведите видоизмененные программы по теме №5, считывающие исходные данные из файла и записывающие в файл. Контроль правильности записи в файл проведите по размеру результирующего файла.

Контрольные вопросы.

  1. Назначение и формат использования процедуры assign.

  2. Назначение и формат использования процедуры reset.

  3. Назначение и формат использования процедуры rewrite.

  4. Назначение и формат использования процедуры append.

  5. Назначение и формат использования процедуры close.

  6. Назначение и формат использования функции eof.