Программирование на ЭВМ

Автор работы: Пользователь скрыл имя, 26 Апреля 2012 в 21:22, курсовая работа

Описание

За время существования профессии программиста сущность его труда изменилась коренным образом. В 50-х годах программы писали в командах ЭВМ (в “машинных кодах”). При этом вся информация переводилась в двоичную систему счисления. Это очень тяжелый и напряженный труд, требующий от человека особой аккуратности. Облегченно вздохнули программисты при появлении в 1956 г. специального языка для решения вычислительных задач. Это был FORTRAN (Formula Translator). С тех пор были разработаны другие, более совершенные языки, или специализированные применительно к какой-то конкретной области: КОБОЛ, АЛГОЛ, ПЛ/1, ЛИСП, СИМУЛА, ПАСКАЛЬ, СИ, АДА, ПРОЛОГ и др.

Работа состоит из  1 файл

Алгоритмы на Pascal.DOC

— 826.50 Кб (Скачать документ)

    RMDIR (path) – удаление пустого каталога.

    5.3.3. Текстовые файлы

    Среди всех файлов в Паскале особо выделяются текстовые файлы. Этот тип значений даже принят в качестве стандартного типа TEXT. Текстовый файл представляет собой последовательность литер (символов), но это не эквивалентно заданию типа файла следующим образом:

    TYPE T = FILE OF CHAR;

    При таком задании тип Т – единая последовательность литер. Но часто  бывает нужно разбить последовательность на порции, строки (как текст программы или книги). Назначение и обработка разных строк могут быть различными.

    В текстовых файлах как раз существует возможность такого разбиения. Строки могут быть разной длины, в том  числе и пустые. В конце строки размещается управляющая литера, называемая “конец строки”. Она не включена в тип CHAR и не имеет графического представления. Внутреннее представление определяется реализацией. С этой литерой связана специальная функция EOLN (f) (end of line).

    Эта функция принимает значение TRUE, если окно указывает на признак конца строки, и FALSE – в противном случае.

    Тип с именем TEXT в программе описывать нельзя, а переменные этого типа описываются обычным образом:

    VAR S, D : TEXT.

    Пример 1. Определить количество строк в текстовом файле с именем BOOK.

    PROGRAM NLINES (OUTPUT, BOOK);

    VAR  K : INTEGER; C : CHAR;

                BOOK : TEXT;

    BEGIN

          K := 0; RESET (BOOK);

          WHILE NOT EOF (BOOK) DO

          BEGIN IF EOLN (BOOK) THEN K := K+1;

                READ (BOOK, C)

          END;

          WRITELN (‘В текстовом файле BOOK’, K, ‘строк’)

    END.

    Чтобы занести управляющую литеру “конец строки” в текстовый файл, имеется специальная стандартная процедура WRITELN. Дело в том, что мы не можем пользоваться процедурой WRITE, т.к. внешне (как значения типа CHAR) такого символа не существует. Параметром процедуры WRITELN является имя текстового файла, который находится в режиме записи. Пусть t – текстовый файл. Тогда после выполнения процедуры

    WRITELN (t);

в позицию, на которую было установлено окно, запишется признак конца строки и окно переместится на следующую  позицию. Будем использовать ‘#’ как печатный символ для обозначения конца строки как элемента файла. 

t      t 
 
 

    Состояние файла t до    Состояние файла t после

    выполнения  процедуры   выполнения процедуры 

    Вторая  стандартная процедура для работы с текстовым файлом – процедура READLN. Ее параметром является имя текстового файла, находящегося в режиме чтения:

    READLN (t);

    После выполнения этого оператора все  компоненты файла t пропускаются до ближайшей управляющей литеры “конец строки”, окно устанавливается на компоненту, непосредственно следующую за признаком конца строки.

    

      
 
 

Состояние файла t до выполнения процедуры 

     
 
 

Состояние файла t после выполнения процедуры 

    Для текстовых файлов допустимы сокращенные  формы записи при последовательных обращениях к стандартным процедурам READ, READLN, WRITE,WRITELN.

    Пусть t – текстовый файл, а xi – элементы ввода или вывода (i = 1,…, n). Тогда

    READ (t, x1, x2, …, xn);

эквивалентно

    READ (t, x1); READ (t, x2); … READ (t, xn);

а

    READLN (t, x1, x2, …, xn);

эквивалентно

    READ (t, x1, x2, …, xn); READLN (t);

    Аналогично 

    WRITE (t, x1, x2, …, xn);

эквивалентно

    WRITE (t, x1); WRITE (t, x2); … WRITE (t, xn);

а

    WRITELN (t, x1, x2, …, xn);

эквивалентно

    WRITE (t, x1, x2, …, xn); WRITELN (t);

    Для текстовых файлов можно использовать следующие общие процедуры работы с файлами:

    ASSIGN (f, name);

    CLOSE (f);

    RESET (f);

    REWRITE (f);

    READ (f);

    WRITE (f).

    Для добавления информации в конец текстового файла используется стандартная  процедура 

    APPEND (f).

При её выполнении открывается файл, с которым  связана файловая переменная f, и окно устанавливается на конец файла.

    К стандартным функциям EOF (f) и EOLN (f) можно добавить:

    SEEKEOF (f) – отличается от EOF (f) тем, что пропускаются стоящие в конце файла символы пробела и табуляции,

    SEEKEOLN (f) – то же для конца строки.

    Пример 2. Из текстового файла Т прочитать попарно вещественные числа и, считая в каждой паре первое число – вещественной частью комплексного числа, а второе – его мнимой частью, записать их в файл комплексных чисел С.

    Тогда, опуская действия, связанные с  контролем ввода-вывода, можно записать следующую программу.

    PROGRAM COMPL;

    TYPE COMPLEX = RECORD

                RE, IM : INTEGER;

                            END;

    VAR  F1 : TEXT;

                F2 : FILE OF COMPLEX;

                X : COMPLEX;

                I, N : INTEGER;

    BEGIN

                ASSIGN (F1, ‘T’);

                ASSIGN (F2, ‘C’);

                REWRITE (F1);

                WHILE NOT EOF DO

                BEGIN

                      READ (N);

                      WRITELN (F1, N);

                END;

                REWRITE (F2); RESET (F1);

                WHILE NOT SEEKEOF (F1) DO

                BEGIN

                      READ (F1, X.RE);

                      IF SEEKEOF (F1)

                      THEN X.IM := 0

                      ELSE READ (F1, X.IM);

                      WRITE (F2, X)

                END;

                RESET (F2);

                WHILE NOT EOF (F2) DO

                BEGIN

                      READ (F2, X);

                      WRITELN (X.RE, ‘+I*’, X.IM);

                END; 

                CLOSE (F1);

                CLOSE (F1);

    END.

    5.3.4. Стандартные текстовые  файлы

    В Паскале есть два стандартных  текстовых файла, предназначенных  для ввода и вывода информации. Это файлы INPUT и OUTPUT. Вся информация, предназначенная для ввода, записывается нами в файл INPUT и вводится (считывается из него) с помощью процедур READ, READLN. Вся информация, предназначенная для вывода, записывается программой в файл OUTPUT с помощью процедур WRITE, WRITELN. 

    Особенности стандартных файлов

  1. Файлы INPUT и OUTPUT в программе описываться не должны.
  2. Считается, что в начале выполнения любой программы автоматически выполнены операторы процедур

    RESET (INPUT); REWRITE (OUTPUT).

    Более того, применять их в явном виде к стандартным файлам запрещено*.

  1. При чтении из стандартного текстового файла INPUT его имя в операторе READ можно опустить, а при записи в файл OUTPUT имя этого файла можно опустить в операторах WRITE, WRITELN (что мы и делали всегда).
  2. То же касается и стандартных функций EOF и EOLN: если их фактическим параметром является имя стандартного файла INPUT, то его можно опустить. Таким образом эквивалентны следующие обращения к стандартным процедурам:

    READ (x)  и  READ (INPUT, x),

    WRITE (y)  и  WRITE (OUTPUT, y),

    WRITELN  и  WRITELN (OUTPUT),

    EOF   и  EOF (INPUT),

    EOLN  и  EOLN (INPUT).

    Важной  особенностью текстовых файлов является правило, по которому в качестве типов  вводимых значений можно использовать не только CHAR, но и INTEGER, и REAL. При этом, конечно, тип вводимого данного должен соответствовать типу переменной, являющейся фактическим параметром процедуры READ.

    Из  стандартного файла INPUT можно вводить только значения типов CHAR, REAL, INTEGER.

    Вывод в стандартный текстовый файл OUTPUT (процедуры WRITE, WRITELN) обладает дополнительными возможностями по сравнению с выводом в обычные файлы.

    Рассмотрим  оператор процедуры WRITE (x);

    Элемент вывода x может иметь один из трех видов

    l  l : m  l : m : n,

    где l – выражение типа CHAR, INTEGER, REAL, BOOLEAN, строковая константа или строковая переменная,

          m, n – выражения, принимающие целые положительные значения.

    Следует иметь в виду, что в файл OUTPUT выводятся последовательности литер, которые разбиваются на строки фиксированной длины. При выводе на экран дисплея строки содержат 80 позиций. Для вывода используется буфер (специальный участок оперативной памяти машины), в котором предварительно формируется строка литер, подлежащих выводу, т.е. все значения других типов преобразуются в литерную (символьную) форму. К началу выполнения программы этот буфер очищается, все его позиции заполняются пробелами. При обработке элемента вывода в операторе WRITE в очередные свободные позиции буфера заносится группа литер, представляющих значение элемента x. 

                                         Элемент вида l

      l – строковая константа. Тогда в буфер заносится последовательность литер в этой строке.

    Пусть l имеет значение ‘F(x) =’. В буфер занесется 5 литер: F(x) =

      l – выражение типа CHAR. Занесется единственная литера, являющаяся значением этого выражения.

      l – логическое выражение. Занесутся либо 4 литеры – TRUE, либо 5 литер – FALSE.

      l – выражение типа INTEGER. Значение выражения (целое число) преобразуется из внутреннего (машинного) представления в последовательность литер, представляющих собой запись этого числа в десятичной системе. Количество позиций обычно равно 8, недостающие слева слова заменяются пробелами. Пример: 

    I := 243; WRITE (I);

       +243 или    243.

      l – выражение типа REAL. Значение представляется в десятичной системе счисления в файле с плавающей точкой. Пример:

     где m – мантисса

          p – порядок,

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

    X := 0.0025; WRITE (X/10);

     +0.244999E-03 или   0.244999Е-03

    При обработке списков элементов  вывода буфер постепенно заполняется литерами. Как только буфер заполнится, сформированная строка литер выводится на очередную строку экрана или принтера.

Информация о работе Программирование на ЭВМ