Как сохранить текст программы в turbo pascal
Все, что необходимо начинающему и опытному программисту
Файлы: сохраняем результаты работы до следующего раза
Как вам должно быть известно из общего курса информатики, память, с которой работает Паскаль и в которой он хранит все свои данные (как и любая другая программа), называется оперативной. Она обладает одним неприятным свойством: ее содержимое стирается при выключении питания компьютера. Чтобы информация сохранялась при выключенном питании (принято говорить «для долговременного хранения информации»), используется внешняя память. Это разного рода диски, дискеты и другие виды носителей. Работе с внешней памятью из программы на Паскале и посвящен наш текущий разговор.
Как работать с текстовым файлом
Файлом называется порция данных, хранящаяся на диске и имеющая имя. Другими словами, все, что вы пытаетесь сохранить на диске, должно быть записано в виде файла. Для того чтобы работать с файлом в Программе, необходимо ввести специальную переменную, которая называется файловой. Через нее мы будем записывать и читать информацию из файла.
Основным элементом текстового файла является символьная строка (ASCII). Можно работать как со строкой целиком, так и с каждым символом в отдельности. Обращение к символам, хранящимся в файле, происходит последовательно.
Открытие файла для чтения
Начиная работать с файлом, его открывают. При этом в памяти создается особая структура данных, частью которой является файловый указатель. Это как бы «курсор», который указывает на позицию файла, с которой будет происходить следующая операция чтения (или записи). После чтения символа (или строки) из файла файловый указатель передвигается на следующий символ (строку). При записи в файл эта позиция всегда указывает на конец файла.
Мы начнем с самого простого — попытаемся открыть текстовый файл для чтения и выведем его содержимое на экран. Для того чтобы программе было что открывать, создайте в Блокноте или прямо в среде Turbo Pascal текстовый файл и назовите его work.txt. Этот файл должен быть сохранен в той же папке, что и рабочие (.pas) файлы с программой на Паскале. Содержимое файла нам не важно. Мы рекомендуем набрать несколько строчек текста, желательно латинскими символами.
Пример 12.1.
Вывод на экран содержимого текстового файла work.txt
Открытие файла для записи
Из предыдущего примера вы, вероятно, поняли, что открытие файла для чтения происходит в результате процедуры reset. При этом файловый указатель устанавливается в начало файла, и процедурами чтения из файла readln и read можно построчно или посимвольно прочитать содержимое всего файла. Если же мы хотим не читать уже имеющийся файл, а записывать в файл свою информацию, мы должны открыть файл для записи. Это делает процедура rewrite.
Если в текущей папке нет файла с именем, указанным в процедуре assign, то создается новый пустой файл. Если файл с таким именем есть, его содержимое очищается. Так или иначе, файловый указатель устанавливается в начало пустого файла, после чего в файл можно записывать информацию построчно (writein) или посимвольно (write).
В следующем примере программа создает новый текстовый файл work.txt и копирует его содержимое в файл user.txt.
Пример 12.2.
Создание и копирование файла
После работы программы откройте оба файла (это можно сделать в режиме Open в среде Turbo Pascal или в Блокноте) и убедитесь, что все получилось верно.
Если вы вводили эти три строки по-русски, то в Блокноте вы, скорее всего, увидите странную путаницу из русских букв. Это от того, что Turbo Pascal — программа для MS-DOS, и символы, которые вы вводили, тоже были записаны в кодировке MS-DOS. Чтобы их нормально прочитать, нужно или открывать эти файлы из программы для MS-DOS (например, Norton Commander), или иснользовать преобразование формата (это умеет делать, например, MS Word).
Задание 12.1.
Напишите программу, которая:
а) создает текстовый файл из четырех строк строчных латинских букв;
б) читает строки из созданного файла и преобразовывает их в строки заглавных латинских букв;
в) после преобразования каждую строку записывает в другой созданный текстовый файл.
Проверьте результаты работы путем чтения обоих файлов!
2012-11-12 ответил бомж
Как сохранить текст программы в turbo pascal
При работе с программами необходимо уметь сохранять их на диске. На этом шаге мы рассмотрим основные способы сохранения программ в файлах и загрузки их в среду программирования.
Загрузка программы из дискового файла.
Для загрузки программы нужно выполнить пункт меню File/Open или воспользоваться клавишей F3. На экране появится следующее окно (рис.1):
Рис.1. Окно открытия программы
- строка Name — строка для задания имени открываемого файла. По умолчанию здесь располагается маска *.PAS для отображения Pascal-программ;
- список Files — перечень файлов, удовлетворяющих маске, которые находятся в указанном каталоге;
- кнопка Open — кнопка, используемая для открытия выбранного файла.
- Tab — перемещение вперед по элементам;
- Shift+Tab — перемещение назад по элементам;
- Нажать клавишу Tab для перехода к списку файлов. Если файл находится на другом диске, то предварительно в строке Name нужно указать имя диска, например A: .
- Используя клавиши управления курсором выбрать нужный файл. Если этот файл находится в другом каталоге, то прежде нужно войти в этот каталог. Помимо файлов в этом списке находятся имена каталогов, которые заканчиваются символом \ (слэш, обратная дробная черта) . Для входа в каталог нужно выделить его и нажать клавишу Enter . Если нужно выйти из текущего каталога, то достаточно выделить символы ..\ (это выход на предыдущий уровень) и нажать клавишу Enter .
- После того, как требуемый файл выделен, достаточно нажать клавишу Enter и его содержимое будет загружено в новое окно.
Сохранение программы в дисковом файле.
Для записи программы на диск используются следующие пункты меню File: Save, Save As. Save all . Рассмотрим те случаи, когда можно использовать тот или иной пункт меню.
1. Содержимое окна еще ни разу не сохранялось. В этом случае подойдет пункт меню File/Save as . При его выполнении на экране появится окно, похожее на окно для загрузки файла (рис.2):
Рис.2. Окно для сохранения файла
В строке Save File As указывается имя файла, в который нужно записать содержимое текущего окна. Все остальные компоненты имеют те же самые значения. После сохранения в файле содержимого текущего окна заданное имя размещается в заголовке окна: там, где было имя по умолчанию (например, NONAME00.PAS ).
2. Содержимое окна ранее было сохранено. Пользователь хочет сохранить содержимое текущего окна под тем же самым именем. Эта ситуация может возникнуть тогда, когда пользователь исправил программу и хочет сохранить изменения. В этом случае лучше выполнить пункт меню File/Save или нажать клавишу F2 . Имя файла в этом случае запрошено не будет, среда программирования возьмет ранее заданное имя.
3. Содержимое окна ранее было сохранено. Пользователь хочет сохранить содержимое текущего окна в новом файле. Эта ситуация возникает тогда, когда нужно сохранить и старую, и новую копию файла. В этом случае лучше использовать пункт меню File/Save As для задания нового имени файла.
4. Пользователь работает с несколькими окнами и хочет сохранить их содержимое, причем содержимое каждого окна ранеее было сохранено. В этом случае применяется пункт меню File/Save all (записать все) . Выполнение этого пункта аналогично File/Save с той разницей, что сохраняется содержимое не одного, а всех открытых окон.
Мы закончили изучение возможностей среды программирования. Следующий шаг содержит начальные сведения по языку программирования Pascal.
Как сохранить текст программы в turbo pascal
Для загрузки среды Турбо-Паскаль запускается файл turbo.exe.
Меню активизируется нажатием клавиши F10. Перемещение по пунктам меню осуще-ствляется курсорными клавишами. Для выбора пункта меню выделить его курсором и нажать Enter. Пункты меню с многоточием «. » содержат установочные параметры (опции). Перемещение по группам опций меню осуществляется нажатием клавиши Tab, (в обратном направлении: Shift+Tab). Для выбора селективной опции меню (*) выделить ее курсором и нажать Tab или Shift+Tab. Для выбора тригерной опции меню [X] выделить ее курсором и нажать SpeaceBar. Опишем некоторые пункты меню, используемые начинающим программистом в среде Турбо-Паскаль 7. 0.
| New. | Создать новый файл |
| Open. | Открыть (создать) файл для редактирования.Написать в строке «Name» имя файла и нажать Enter, либо, нажав Tab или Enter, выбрать файл из списка. |
| Save. | Сохранить файл ( записать на диск ) |
| Save As. | Сохранить файл под новым именем (исходный файл остается) |
| Exit | Выход из среды Турбо-Паскаль |
Загрузив файл в редактор, можно использовать команды редактирования:
| Undo | Создать новый файл |
| Open. | Отменить предыдущую команду редактирования |
| Redo | Восстановить отмененную команду редактирования |
| Cut | Удалить блок с экрана в буфер (в окно Clipboard) |
| Copy | Скопировать блок с экрана в буфер |
| Paste | Извлечь (скопировать) блок из буфера на экран |
| Clear | Удалить блок на экране |
После внесения изменений в файл рекомендуется записывать его на диск командой Save ( F2 ), иначе при перезагрузке компьютера изменения не сохраняются, а при выходе из среды Турбо-Паскаль командой Exit ( Alt+X ) появляется запрос на сохранение модифицированного файла: Save?
Отредактированную программу необходимо преобразовать в машинные коды (скомпилировать). Для компиляции программы используется комбинация клавиш Alt+F9 или команда Compile меню Compile. Если программа использует нескомпилированные модули (или модули с обновленным текстом), то компиляция осуществляется командами меню Compile: Make (F9) — с омпиляцией измененных модулей или Build — с перекомпиляцией всех модулей. Компилятор выявляет синтаксические ошибки, устанавливает на неправильном операторе курсор и выдает соответствующее сообщение, например: Error 85 «;» expected (пропущен символ «;»). Отметим, что ошибки, указанные в сообщении, могут быть вторичными — результат неверной записи других операторов. После исправления ошибки необходимо снова запустить компилятор.
В результате компиляции программы образуется исполняемый файл (расширение .ЕXE) в оперативной памяти если установлена опция Memory в меню Compile, Destination или на диске (опция Disk) в каталоге, указанном в строке EXE & TPU directory меню Options, Directories. При компиляции модуля образуется файл с расширением .TPU
Отметим некоторые опции для работы с файлами:
В меню Options , Environment , Preferences можно указать: Editor files — автоматическая запись на диск редактируемого файла при запуске его на выполнение.
В меню Options , Environment , Editor можно указать: Create backup files — создавать страховочные копии предыдущей редакции файла (расширение .BAK) при записи файла на диск. Persistant blocks — выделение блока остается после перемещения курсора.
В меню Options, Directories нужно указать каталоги для размещения файлов: EXE & TPU directory — C:\tp7\exe ( с расширением .exe и .tpu ), Include directories — C:\tp7\inc ( компилируемых с ключом ), Unit directories — C:\tp7\unit ( библиотечные файлы *.tpu ).
Сохранить конфигурацию среды можно командой Save меню Options.
Команда Run меню Run (Ctrl+F9) запускает исполняемый файл на выполнение, если текст программы не изменялся, иначе происходит перекомпиляция программы и ее запуск. Ошибки на этапе выполнения связаны, как правило, с недопустимыми значениями аргументов функций, диапазонов изменения чисел и индексов массивов, неправильными операциями ввода/вывода. Загрузчик выдает код ошибки и ее адрес, например, Runtime error 200: Division by zero at 0BEC:0045 (деление на ноль). Прервать выполнение программы можно нажав комбинацию клавиш Ctrl+Break. После выполнения программы восстанавливается среда Турбо-Паскаль. Результаты вывода на экран можно посмотреть командой Alt+F5
Ввод-вывод, оператор присваивания, арифметические операции
Теоретический материал: файловый ввод-вывод (Паскаль)
Файлы. Виды файлов. Основные процедуры для работы с файлами
До сих пор мы рассматривали задачи, в которых во время выполнения программы данные поступают с клавиатуры, а результаты выводятся на экран дисплея. При этом ни исходные данные, ни результаты не сохраняются. Всякий раз при выполнении одной и той же программы, в частности, во время отладки, приходится заново вводить данные. А если их очень много? В языке Паскаль есть возможность записать их на диск. Для этого необходимо оформить исходные данные и результаты в виде файлов, которые хранятся на диске точно так же, как и программы.
Понятие файла — это фундаментальное понятие информатики, вспомним же его определение.
Определение. Файлом называется область памяти на диске, имеющая свое имя.
Вы знаете различные виды физических файлов: системные, графические, текстовые и другие, зачастую созданные той или иной прикладной программой. И любой из этих физических файлов Вы сможете считать, проанализировать, изменить и записать.
Физические файлы можно по-разному представить в программе. Язык Турбо Паскаль предлагает три вида представления файлов:
И Вы, в зависимости от решаемой задачи, вольны выбирать один их трех видов, а, может быть, и несколько. Для того, чтобы сделать правильный выбор, Вы должны хорошо знать не только процедуры и функции, являющиеся общими для всех видов файлов, но и специфичные для каждого вида.
Для работы с конкретным физическим файлом на диске надо представить в программе так называемую файловую переменную и произвести ее логическую связку с этим файлом. Файловые переменные имеют специфическое применение. Над ними нельзя выполнять никаких операций (присваивать значение, сравнивать и др.). Их можно использовать только для выполнения операций с файлами (чтения, записи, удаления файла и т.д.). Кроме того, через файловую переменную можно получить информацию о конкретном файле (тип, параметры, имя файла и т.д.).
По сути, любой физический файл можно представить как последовательность блоков информации некоторого типа. Все компоненты файла имеют общее имя, а каждый имеет еще и свой номер. Начальный элемент имеет нулевой номер.
Количество элементов файла может быть любым: число компонентов файла может изменяться (увеличиваться или уменьшаться), то есть, заранее не фиксируется. В файлах можно хранить достаточно большое количество данных. После каждого элемента файла автоматически ставится признак конца элемента, а в конце файла ставится признак конца файла.
С каждым файлом можно связать понятие «текущий указатель». Это неявно описанная переменная, которая указывает на конкретный элемент файла. Действия с файлами производятся поэлементно, причем в них участвует тот элемент, на который «смотрит» текущий указатель, перемещающийся в результате выполнения действия на следующий элемент.
Главное, чему необходимо научиться при работе с файлами — это записать информацию из программы в файл и считать нужную информацию в выделенную переменную для обработки программой. Общая последовательность действий при этом такова:
— описать переменную файлового типа;
— связать ее с конкретным физическим файлом процедурой assign;
— открыть файл процедурой reset или rewrite;
— выполнить чтение или запись информации;
— по окончании работы с файлом закрыть файл процедурой close.
Формат объявления файловых переменных и особенности работы с различными видами файлов (типизированными, нетипизированными, текстовыми) будут подробно изложены далее.
Процедуры и функции для работы с файлами любого типа
Переменные файлового типа используются в программе только в качестве параметров собственных и стандартных процедур и функций. Все фактические действия с файлами основаны на наборе стандартных процедур языка, входящих в состав модулей System и Dos.
Сначала рассмотрим процедуры модуля System.
Напомним, что он подключен к программам по умолчанию, то есть его не требуется подключать к программе в разделе Uses.
До начала работы с файлами устанавливается связь файловой переменной МуFilе с именем дискового файла. Очень важно различать собственно файл (область памяти на магнитном носителе с некоторой информацией) и переменную файлового типа в Turbo Pascal-программе. Считается, что файловая переменная является представителем некоторого дискового файла в программе. Для того, чтобы реализовать доступ к файлу на магнитном диске, программа должна связать его с файловой переменной. Для этого необходимо установить соответствие между переменной и именем файла. Это имя представляется в виде строки, содержащей имя файла и, может быть, путь к файлу, который формируется по общим правилам MS-DOS.
| assign (МуFilе, ‘с:\МуDirectory\Result.dat’); |
здесь приведено полное (с указанием пути) имя пользовательского файла Result.dat.
Если путь не указан, программа будет искать файл только в своем рабочем каталоге и, как это принято в системе DOS, по указанным в файле аutoехес.bat путям. Кроме указания имени файла на дисковом накопителе может быть указано стандартное имя одного из устройств ввода-вывода: «соn» — консоль, то есть дисплей и клавиатура, «рrn» — или «lpt1» — принтер.
Не разрешается связывать с одним физическим файлом разные файловые переменные программы.
До тех пор, пока файловая переменная не связана с каким-либо дисковым файлом, никакие операции с ней в программе невозможны. Заметим, что можно связать файловую переменную с еще не существующим дисковым файлом. Это делается в случае последующего создания Turbo Pascal-программой файла с данным именем с помощью специальной системной процедуры.
После того, как файловая переменная с помощью процедуры Аssign связана с конкретным дисковым файлом, с ним можно выполнить любую допустимую операцию.
Внимание! Нельзя применять процедуру assign к открытому файлу.
Все файлы, открытые в результате работы программы, должны быть закрыты при завершении программы процедурой
| closе (МуFilе); |
При выполнении этого оператора закрывается физический файл на диске, и фиксируются изменения, связанные с использованием данного файла. Обратите внимание на необходимость закрытия файлов во всех ветвях программы, в том числе в различных аварийных ситуациях. Незакрытые файлы нарушают файловую структуру на диске, что может приводить к серьезным проблемам с настройкой компьютера.
Открытие нового файла производится процедурой, единственный аргумент которой — переменная файлового типа, например:
| rewrite (МуFilе); |
Эта процедура создает на диске файл с именем, связанным с переменной МуFilе процедурой Аssign. Указатель работы с файлом устанавливается на начало файла. После выполнения процедуры rewrite файл доступен как для записи, так и для чтения (в случае текстовых файлов – только для записи).
Внимание! Если файл с таким именем уже существует, он удаляется (его содержимое теряется), и создается новый пустой файл с данным именем.
Открытие существующего файла выполняет процедура
| reset (МуFilе); |
Эта процедура ищет уже существующий файл на диске и открывает его для работы, помещая указатель в начальную позицию. Если файл с установленным в Аssign именем не найден, возникает ошибка ввода/вывода, контроль которой зависит от директивы компилятора (смотрите здесь). После выполнения процедуры reset файл доступен как для записи, так и для чтения (в случае текстовых файлов – только для чтения).
Запись в файл производится процедурой
| write (МуFilе, var1, var2, . varN); |
Первый аргумент этой процедуры — переменная файлового типа, далее следует список записываемых переменных, которые должны соответствовать объявленному типу файла. При выполнении этой операции текущий указатель файла смещается на число позиций, равное числу переменных.
Чтение из файла производится аналогичной процедурой:
| read (МуFilе, var1, var2, . varN); |
Примечание. Особенности выполнения операций записи и чтения для нетипизированных и текстовых файлов описаны в соответствующих разделах.
Положение элементов в файле нумеруется, начиная с номера 0 для первого элемента. После последнего элемента файла автоматически записывается признак конца файла.
Функция FileSize(МуFilе) определяет число элементов в файле. Функция неприменима к текстовым файлам. Файл MyFyle должен быть открыт.
Функция логического типа ЕОF(МуFilе) имеет значение Тruе, если указатель указывает на маркер конца файла (End Of File).