Песни о Паскале
Шрифт:
1) По значению (простые типы) 2) По ссылке CONST (сложные типы)
Только из процедуры и функции
1) Через имя функции (одно значение) 2) По ссылке VAR (несколько значений)
В обоих направлениях
По ссылке VAR (любые данные)
В каждом случае предпочтительный способ указан первым. Данные простых типов лучше передавать внутрь подпрограмм по значению. По ссылке CONST передают строки и другие сложные типы данных (скоро мы изучим их). Через имя функции возвращают лишь один результат. А если надо вернуть несколько результатов,
Встроенные процедуры и функции
Программа, сработанная профессионалом, состоит почти из одних только процедур и функций, разработка которых отнимает львиную долю времени. Но не всегда программисты пишут их сами. В Паскале запасено немало готовых подпрограмм – это встроенные в язык и в библиотеки процедуры и функции. С ними можно ознакомиться в руководстве по языку и во встроенной справке. Некоторые из них вам известны, и применялись нами.
Текстовые файлы
Напоследок напомню об основных средствах обработки текстовых файлов.
Для чтения из файлов применяют следующие процедуры и функции:
Assign(F, ...) - Связать файловую переменную с файлом
Reset(F) - Открыть файл для чтения
Read(F, ...) - Прочитать часть строки файла
Readln(F, ...) - Прочитать строку файла и перейти к следующей
Eoln(F) - Проверить на конец строки
Eof(F) - Проверить на конец файла
Close(F) - Закрыть файл
Для записи в файл применяют такие процедуры:
Assign(F, ...) - Связать файловую переменную с файлом
Rewrite(F) - Открыть файл для записи
Write(F, ...) - Записать часть строки файла
Writeln(F, ...) - Записать строку файла и перейти к следующей
Close(F) - Закрыть файл
Чтобы связать текстовый файл с клавиатурой (при вводе) или с экраном (при выводе), можно прибегнуть к двум приёмам. Первый состоит в том, чтобы назначить файлу пустое имя.
var F_In, F_Out : Text;
begin
Assign(F_In,’’); Reset(F); { F_In связали с клавиатурой }
Assign(F_Out,’’); Rewrite(F); { F_Out связали с экраном }
. . .
end.
Второй приём заключается в применении специального имени "CON" — от слова Console (оно предусмотрено в MS-DOS и Windows).
Assign(F_In,’Con’); Reset(F); { F_In связали с клавиатурой }
Assign(F_Out,’Con’); Rewrite(F); { F_Out связали с экраном }
В операционных системах MS-DOS и Windows существует несколько специальных имен файлов, вот некоторые из них:
AUX -
CON - Клавиатура и экран (CONsole)
NUL - Фиктивное устройство (для тестирования)
PRN - Первый параллельный принтер
Аналогичные имена применяют и в UNIX-подобных системах.
Наконец, для действий с текстовыми файлами можно применять две встроенные в язык файловые переменные: INPUT и OUTPUT. Они не нуждаются ни в объявлении, ни в открытии, ни в закрытии файлов:
Readln(Input, S); { - то же самое, что Readln(S) }
Writeln(Output, S); { - то же самое, что Writeln(S) }
Файловые переменные INPUT и OUTPUT можно передавать в качестве фактических параметров внутрь процедур и функций, а также связывать их с дисковыми файлами. Вот пример копирования файла из «MyText.in» в «MyText.out»:
var S: string;
begin
Assign(Input,’MyText.in’); Reset(Input);
Assign(Output,’MyText.out’); Rewrite(Output);
While not Eof do begin
Readln(S);
Writeln(S);
end;
Close(Input); Close(Output);
end.
Что дальше?
Мы изучили фундамент языка Паскаль, который составляют простые типы данных и управляющие структуры. Впереди интересные и серьезные проекты, в основе которых лежат сложные типы данных. Вы осилите их, если пройденный материал надежно закрепился в вашей голове. Вы чувствуете это? Нет? Тогда без ложного стыда вернитесь к началу книги, ведь повторение – мать учения!
Итоги
• Основу программ составляют три базовые управляющие структуры: линейная последовательность, альтернатива и цикл.
• Альтернатива организуется условными операторами и оператором выбора.
• Для циклов в Паскале предусмотрено три оператора: 1) цикл с проверкой в начале, 2) цикл с проверкой в конце и 3) цикл со счетчиком.
• Программа состоит из ряда секций. Секции описания констант, типов и переменных нужны для размещения данных. Исполняемые секции содержат процедуры, функции и главную программу.
• Обязательной является лишь секция главной программы, прочие секции включают в программу по мере необходимости.
• Секции могут чередоваться произвольно. Но любой объект программы должен быть объявлен до того, как будет использован.
• Основная нагрузка по обработке данных возлагается на процедуры и функции – подпрограммы. Из тела одних подпрограмм вызывают другие подпрограммы, – такие вызовы называют вложенными.
• Передачу данных между подпрограммами предпочтительней выполнять через параметры и имена функций.