Файл: программирование на паскале2.doc

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 21.04.2025

Просмотров: 1356

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

СОДЕРЖАНИЕ

Министерство образования и науки российской федерации

Начальный курс программирования на основе алгоритмического языка Паскаль

Введение

Часть. Основы программирования на Паскале

1.1. Структура простейшей Паскаль-программы

1.2. Данные и операции над ними

1.2.1. Свойства ячейки памяти. Переменные и константы

1.2.2. Типы данных

1.2.3. Правила записи констант

1.2.4. Описание переменных и именованных констант в Паскале

1.2.5. Выражения

1.3. Операторы преобразования данных

1.3.1. Оператор присваивания

1.3.2. Понятие ввода и вывода

1.3.3. Оператор вывода

1.3.4. Оператор ввода

1.4. Разработка простейших программ

1.4.1. Понятие о качестве программы и основные технологические принципы разработки программ

1.4.2. Алгоритм и способы его записи.

1.4.3. Изображение алгоритмов в виде блок-схем

1.4.4. Базовые структуры алгоритмов и их кодирование на Паскале

1. Следование

2. Ветвление (развилка)

If условие then

If условие then

3. Цикл

1.4.5. Примеры разработки программ

1.5. Массивы

1.5.1. Понятие массива. Основные правила работы с массивами в Паскале

1.5.2. Примеры программ с массивами

1.614. Структура паскаль-программы

Часть.Подпрограммы

2.1. Общие сведения о подпрограммах

2.2. Процедуры в Паскале

2.2.1.Описание процедур

2.2.2. Обращение к процедуре

2.3. Функции Паскаля

2.3.1. Описание функций

2.3.2. Обращение к функции

2.4. Глобальные и локальные имена

2.5. Использование подпрограммы в качестве параметра другой подпрограммы

2.6. Модули

2.6.1. Общие сведения

2.6.2. Структура модуля

2.6.3. Использование модулей

2.6.4. Модули как средство программирования

Часть. Обработка символьной информации и документов сложной структуры

3.1. Обработка символьной информации

3.1.1. Символьный тип

3.1.2.Строковые типы

3.1.3. Подпрограммы, работающие со строками

Функции

Процедуры

3.2. Тип запись

3.3. Файлы

3.3.1. Общие понятия

3.3.2. Файлы в Турбо Паскале

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

Пример 1

Пример 2

3.3.4. Типизированные файлы

3.3.5. Нетипизированные файлы

Часть IV. Работа с динамическими массивами

Приложение 1. Краткая инструкция по работе в среде Turbo (Borland) Pascal.

Режимы компиляции программы, использующей модули

Приложение 2. Краткая инструкция по работе в режиме консольного приложения средыDelphi. Создание консольного приложения

Сохранение консольного приложения.

Отладка программы

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

Заключение

Библиографические ссылки

Содержание

Часть IV. Работа с динамическими массивами 98

VAR C:COMPLEX; D,D1:DATE; B:BOOK;

BEGIN . . . C.Re:=5; D.Month:=January; B.Author:='Smith';

{*} D1.Day:=6; D1.Month:=June; D1.Year:=1799;{*} . . .

Чтобы не писать многократно имя записи при работе с ее полями, используется оператор

WITHИмя_записи DOоператор

Три оператора, ограниченные {*}, эквивалентны оператору:

WITH D1 DO

BEGIN Day:=6; Month:=June; Year:=1799

END;

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

Program Toys;

TYPE SVED=RECORD {тип "запись", описывающий игрушку}

name:String; {название игрушки}

MinAge, MaxAge,Rub:Real;

{возрастные границы и стоимость}

END;

VAR N:Integer; {число наименований игрушек}

Toy:SVED; {переменная, описывающая игрушку}

max:Real; {максимальная стоимость конструктора для детей до 7 лет}

namemax:String; {название искомого конструктора}

i:Integer; {счетчик наименований игрушек}

BEGIN

Writeln(' Введите число наименований игpушек');

ReadLn(N);

max:=0;

For i:=1 to N Do

With Toy Do {работаем с полями записи Toy}

BEGIN

Writeln('Введите название игpушки с номером', i:2);

Readln(name);

Writeln('Введите мин. и макс. возраст и стоимость');

Readln(Minage,Maxage,Rub); {вводим запись по полям}

If ((Pos('констpуктоp',name)>0) or {содержит ли название}

(Pos('Констpуктоp',name)>0)) and {слово "конструктор" }

(MaxAge<=7) Then

If Rub>max Then

BEGIN

max:=Rub;

namemax:=name

END;

END;

If max=0 Then

WriteLn(' Констpуктоpов для детей до семи лет нет')

Else

BEGIN

WriteLn('Cамый доpогой констpуктоp для детей до семи лет');

WriteLn(namemax);

WriteLn('стоит ', max:6:0, ' pублей')

END;

END.

Замечания:

  1. Программа, использующая запись, конечно, алгоритмически проще, чем программа со строками. Платой за упрощение является разрушение структуры таблицы при вводе: строка таблицы распределяется по нескольким строкам экрана монитора компьютера.

  2. Недостатки программы, отмеченные в §3.1.3, имеют место и для этой программы. Они устраняются использованием файлов.


3.3. Файлы

3.3.1. Общие понятия

Термин файл используется в программировании в двух смыслах. В рамках операционной системы файл понимается как область памяти внешнего запоминающего устройства (обычно диска), имеющая имя. В алгоритмических языках файл - это тип данных, используемый, как правило, при работе с внешними запоминающими устройствами. В этой главе мы будем рассматривать файл как тип данных.

Файл- это последовательность однотипных компонент.Число компонент файла не ограничено. После последней компоненты файла стоит специальный код, называемый признаком конца файла; этот код обычно ставится автоматически, без участия программиста.

В классическом понимании файл рассматривается как абст­рактное обобщение данных на устройстве с последовательным дос­тупом, типичным представителем которого является магнитная лента. В библиотеках современных языков программирования, ко­нечно, имеются средства и для работы с файлами прямого доступа.

Условно устройство с последовательным доступом можно представить как бесконечную ленту с фиксированным началом. Движение по этой ленте возможно только от начала, последовательно от компоненты к компоненте. Для достижения N-й компоненты необходимо пройти (N-1) предыдущих компонент. В оперативной памяти ЭВМ для каждого файла существует единственная ячейка, в которую информация может считываться из файла или из которой информация может записываться в файл; эта ячейка рассчитана точно на одну компоненту файла; она называетсябуфером( или окном, карманом). Используется также терминуказатель файла. Это абстрактное понятие, соответствующее головке считывания-записи магнитной ленты или магнитного диска. Указатель стоит (указывает) на доступной ( в каждый момент единственной!) компоненте файла.

Обычно в алгоритмических языках определяется программное и физическоеимя файлов. Программное имя - это имя переменной файлового типа, физическое имя - это имя устройства или файла на диске. Существуют специальные операторы, связывающие программное и физическое имя файла.

Файлы бывают текстовыми идвоичными.

Текстовые файлы хранят информациюво внешнем представлении. Они имеют два основных признака: во-первых, их компонентами являются строки символов; во-вторых, эта символьная информация интерпретируется в соответствии с типом вводимых или выводимых переменных. Эти файлы являются обобщением данных на устройствеCON (т.е. вводимых с клавиатуры или выводимых на экран компьютера). Умение работать с текстовыми файлами необходимо даже начинающим программистам, так как на устройствеCON данные существуют малый промежуток времени, а обычно имеется потребность в их длительном хранении.


Текстовые файлы можно подготовить, прочитать, исправить с помощью текстового редактора. Они хранят информацию во внеш­нем представлении, в виде, понятном для человека. Такие файлы часто называются видимыми.

Двоичный файл- это последовательность байтов; обмен информации между двоичным файлом и переменными программы происходит без преобразования. В Турбо Паскале рассматривается два вида двоичных файлов: типизированные и нетипизированные. В случае типизированных файлов байты файла разбиваются на ячейки в соответствии с типом компонент файла; например, для файла с базовым типомintegerкаждая пара байтов (для 32-разрядных компьютеров – четверка) рассматривается как целое значение;типизированныефайлы хранят данныево внутреннем представлении. Для нетипизированных файлов представление информации безразлично, файл рассматривается как последовательность нулей и единиц.

Ниже рассматривается подход к файлам версии Турбо Паскаль. Объектный Паскаль поддерживает этот подход, хотя имеет и другие широкие возможности для работы с файлами, характерные для операционной среды Windows; рассмотрение последних возможностей выходит за рамки данного пособия.


3.3.2. Файлы в Турбо Паскале

Файлы бывают текстовые, типизированные и нетипизированные.

Функция EOF20(имя_файла) применяется к файлам любого вида. Она возвращает значениеTRUE при чтении конца файла, иначе возвращает FALSE.

Все процедуры, использующие файлы, не работают без других, подготовительных, процедур: ASSIGN21, RESET, REWRITE.

Процедура ASSIGNсвязывает программное имя файла (т.е. имя переменной, описанной как файл) и его физическое имя (т.е. имя файла на диске или имя устройства, записанное по правилам операционной системы). Обращение к процедуре имеет вид:

ASSIGN(програм_имя_файла,физич_имя_файла).

Процедура RESET(имя файла) подготавливает файл к чтению (вводу). В случае отсутствия файла с заданным физическим именем процедура выводит сообщение об ошибке. В случае существования файла производятся следующие действия. Если файл не пустой, то указатель устанавливается на первую компоненту, значение первой компоненты пересылается в буфер, функцияEOF принимает значениеFALSE. Если файл пуст, то содержимое буфера считается неопределенным, а функцияEOF устанавливается в значение TRUE.

Процедура REWRITE(имя_файла) подготавливает файл к записи (выводу). Если файл с заданным физическим именем не существует, то делается попытка создать файл. Далее файл очищается; указатель устанавливается на первую компоненту; функцияEOF принимает значениеTRUE.

RESETи REWRITE называются процедурами открытия файла (для чтения и записи, соответственно). ПроцедураAPPEND(имя_файла) открывает текстовый файл для дополнения.

После окончания работы с файлом необходимо его закрыть с помощью процедуры CLOSE22 (имя_ файла). Под закрытием файла понимается его сохранение и перерегистрация в каталоге. Кроме того, в результате закрытия файла разрушается связь между программным и физическим именами файла, определенная операторомASSIGN; использование программного имени файла становится невозможным (до повторного примененияASSIGNи открытия файла).

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

Для описания переменной типа текстовый файл используется ключевое слово TEXT23:

VAR имя_текст-файла: TEXT;. . .

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


READ(имя-файла,список_ввода);

WRITE(имя_файла, список_вывода)

READLN(имя_файла, список_ввода);

WRITELN(имя_файла, список_вывода)

Если имя файла отсутствует, то используется имя CON.

Функция EOLN24(имя_файла) применима только к текстовым файлам (так же, как и процедурыREADLN иWRITELN); она возвращает значениеTRUE,если считан конец строки, иначе возвращает значение FALSE.

Далее приведены программы, исходные и выходные данные которых хранятся в текстовых файлах.

Пример 1

program Primer1_3_3_3;

{В текстовом файле Х хранятся сведения об игрушках}

{в текстовый файлY записываются сведения}

{о конструкторах для детей до 7 лет}

Type sved=record

name:string;

minage,maxage:integer;rub:real;

end;

Var x,y:text; toy:sved;

Begin

Assign (x,'d:\student\xtext.txt');

Assign(y,'d:\student\ytext.txt');

{физические имена файлов выбраны произвольно}

reset(x); rewrite(y);{xоткрывается для чтения, у - для записи}

if eof(x) then writeln('x - пустой')

else

Begin

while not eof(x) do

with toy do

Begin

readln(x,name); {запись считывается по полям}

readln(x,minage,maxage,rub);

if((pos('конструктор',name)>0) or pos('конструктор',name)>0))

and (maxage<=7) then

writeln(y,name); {запись выводится по полям}

writeln(y,minage,maxage, rub:8:0);

End;

End;

Close(x); Close(y);

End.