Res в паскале что это
Pascal: Занятие № 12 Часть1. Работа с файлами в паскале (текстовые файлы)
Работа с файлами в паскале
Виды файлов в зависимости от их описания и режимом работы
Описание файловых переменных:
Для связи файла в коде программы и действительного файла на внешнем носителе используется процедура ASSIGN :
где myfile — имя переменной (объявленной ранее в области var ), ассоциированной с файлом
c:\text.txt — путь к реальному файлу
Первый аргумент процедуры assign в паскаль — переменная, второй – путь к файлу на диске.
Текстовые файлы в паскале: процедуры работы
Текстовый файл в Паскале — это совокупность строк произвольной длины, которые разделены между собой метками конца строки, а весь файл заканчивается меткой конца файла.
Возможные расширения файлов:
*.txt, *.log,
*.htm, *.html
Метод работы с текстовым файлом в Паскале предусматривает лишь последовательный доступ к каждой строке файла. Это означает, что начинать всегда возможно только с первой строки, затем проходя по каждой строке, дойти постепенно до необходимой. Т.е. можно сказать, что чтение (или запись) из файла (в файл) ведутся байт за байтом от начала к концу.
Предусмотрены два режима работы: режим для записи в файл информации и для чтения ее из файла. Одновременная запись и чтение запрещены.
Открытие файла
Допустим, мы в программе описали переменную для работы с текстовым файлом:
Рассмотрим дальнейшую последовательность работы с ним, и рассмотрим процедуры, необходимые для работы с текстовым файлом в Паскале:
процедура открытия существующего файла для чтения при последовательном доступе:
процедура открытия создаваемого файла для записи в него информации; если файл с таким именем уже существует, то информация в нем стирается:
Основные понятия и операторы языка Паскаль
Основные понятия и операторы языка Паскаль
Сайт: | Электронные курсы ТПУ |
Курс: | Информационные технологии 3 |
Книга: | Основные понятия и операторы языка Паскаль |
Напечатано:: | Гость |
Дата: | Среда, 1 Декабрь 2021, 13:06 |
Оглавление
ВВЕДЕНИЕ
Целью курса «Информационные технологии» является обучение студентов программированию с применением методов вычислительной математики, использованием современных средств вычислительной техники и компьютерных технологий, дальнейшее развитие компьютерной грамотности на основе дисциплин «Информатика», «Математика», «Начертательная геометрия и инженерная графика», «Физика».
Задачи изучения дисциплины заключаются в практическом освоении языка и среды Турбо Паскаля (версии 7.0), в приобретении студентами навыков составления алгоритмов задач теплоэнергетического профиля, отладки программ, в умении проводить анализ полученных результатов и корректировать свои действия с целью улучшения качественных показателей программ.
Язык Турбо Паскаль является классическим языком программирования, широко применяемым в инженерных расчётах. Его изучение позволяет сформировать у студентов особый вид мышления – алгоритмический. Студентам, успешно овладевшим этим языком, не составит особого труда в будущей своей трудовой деятельности применять свои знания и составлять программы не только на языке Паскаль, но и на других языках программирования. Особенно важным является то, что знание языка Паскаль нужно для составления программ в среде Windows при помощи прикладного пакета Delphi, всё более популярного в последнее время.
К настоящему моменту имеется огромное количество библиотек программ, процедур и функций с примерами реализации большинства инженерных задач на языке Паскаль и в среде визуального программирования Delphi. Умелое применение этих наработок предполагает хорошее базовое знание языка Паскаль.
В период обучения студенты должны освоить некоторые численные методы и способы их реализации на языке Паскаль, в том числе с использованием библиотек подпрограмм и внешних файлов данных.
1. ОСНОВНЫЕ ПОНЯТИЯ СИСТЕМЫ ПРОГРАММИРОВАНИЯ ТУРБО ПАСКАЛЬ
Большинство программ создаются для решения какой-либо задачи. В процессе ее решения на ПК необходимо: ввести данные, указать способ их обработки, задать способ вывода полученных результатов. Поэтому нужно знать следующее:
Необходимо также уметь упорядочивать команды так, чтобы:
Таким образом, нужно уметь использовать семь основных элементов программирования – ввод, данные, операции, вывод, условное выполнение, циклы и подпрограммы – и на их основе строить программы.
Этот список не является полным, однако, он содержит те элементы, которые присущи обычно всем программам. Многие языки программирования имеют еще и дополнительные средства, в том числе и Паскаль.
Основные файлы пакета Турбо Паскаль:
Для работы в графическом режиме необходимы Graph.tru – модуль с графическими процедурами и функциями Турбо Паскаля, несколько файлов с расширением *.BGI – драйверы различных типов видеосистем ПК, несколько файлов с расширением *.CHR, содержащих векторные шрифты.
После загрузки системы экран разделен на три части: основное (или рабочее) окно, главное меню и строка, в которой указывается назначение основных функциональных клавиш. Переход из основного окна в главное меню и обратно осуществляется посредством клавиши F10.
В рабочем окне осуществляется набор текста программы, запуск же происходит следующим образом: выход в меню, выбор пункта Run – Run.
Для того чтобы сохранить программу, необходимо: выйти в меню, выбрать File – Save (Save as …), в появившемся окне ввести имя файла и нажать клавишу Enter.
Выход из системы программирования: выход в меню, пункт File – Exit.
1.1. Алфавит и словарь языка Паскаль
Язык – совокупность символов, соглашений и правил, используемых для общения. При записи алгоритма решения задачи на языке программирования необходимо четко знать правила написания и использования языковых единиц. Основой любого языка является алфавит (набор знаков, состоящий из букв, десятичных и шестнадцатеричных цифр, специальных символов).
Алфавит Паскаля составляют:
Неделимые последовательности знаков алфавита образуют слова, отделенные друг от друга разделителями. Ими могут быть пробел, комментарий или символ конца строки. Словарь Паскаля можно разделить на три группы слов: зарезервированные слова, стандартные идентификаторы и идентификаторы пользователя.
Зарезервированные слова (см. табл. 1.1) имеют фиксированное написание и навсегда определенный смысл. Они не могут изменяться программистом, и их нельзя использовать в качестве имен для обозначения величин.
Идентификатор – имя (identification – установление соответствия объекта некоторому набору символов). Для обозначения определенных разработчиками языка функций, констант и т. д. служат стандартные идентификаторы, например, Sqr, Sqrt и т. д. В этом примере Sqr вызывает функцию, которая возводит в квадрат данное число, а Sqrt – корень квадратный из заданного числа. Пользователь может переопределить любой стандартный идентификатор, но чаще всего это приводит к ошибкам, поэтому на практике их используют без изменения. Идентификаторы пользователя – это те имена, которые дает сам программист. При записи программ нужно соблюдать общие правила написания идентификаторов:
Некоторые зарезервированные слова версии Турбо Паскаль.
Остаток от деления
До тех пор, пока не выполнится
Группа слов, имеющая смысл, называется словосочетанием. В языке программирования словосочетание, состоящее из слов и символов и задающее правило вычисления некоторого значения, называется выражением. Минимальная конструкция языка, представляющая законченную мысль, есть предложение. Если предложение языка программирования задает полное описание действия, которое необходимо выполнить, то оно называется оператором. Предложение, описывающее структуру и организацию данных, называется описанием.
1.1.1. Величины в Паскале
Решение задач на ПК – это процесс сбора, обработки и передачи информации. Поэтому задача любой программы состоит в обработке данных. В Паскале данные делятся на константы и переменные. Они определяются идентификаторами (именами).
Константами называются такие данные, которые не изменяются в процессе выполнения программы в отличие от переменных, которые могут менять свои значения. Имя переменной подобно ящичку, который можно заполнить различными значениями, что нельзя сделать с константой. Переменная характеризуется именем, типом (см. 1.2) и значением.
Кроме констант и переменных, существуют так называемые типизированные константы, которые являются как бы промежуточным звеном между переменными и константами (в данном пособии не рассматриваются. Рекомендуется дополнительная литература, например, [3]).
1.1.2. Структура программы
В программе программист записывает последовательность действий, выполняемых над определенными данными с помощью различных операций для реализации заданной цели. Основные требования, предъявляемые к программе:
Максимальный размер программы ограничен. Компилятор позволяет обрабатывать программы, в которых объем данных и генерируемый машинный код не превышают 64 Кбайт каждый. Если объем программы требует большего количества памяти, то необходимо использовать дополнительные средства.
Раздел описания начинается соответствующим каждому элементу списка служебным словом (табл. 1), после которого идет последовательность величин одного типа, разделенных запятой. После списка имен ставится двоеточие и указывается тип данных (см. 1.2).
Любой элемент данного списка в программе может отсутствовать.
Данный раздел начинается со служебного слова Begin и заканчивается служебным словом End. В нём задаются действия над объектами программы, введенными в разделе описаний. Операторы, посредством которых эти действия производятся, разделяются точкой с запятой. После последнего слова End ставится точка.
Для лучшего восприятия текста программы и поиска ошибок рекомендуется следующая схема:
1.2. Типы данных
При решении задач выполняется обработка информации различного свойства, например: дробные и целые числа, слова, строки и т. д. Для описания множества допустимых значений величины и совокупности операций, в которых участвует данная величина, используется указание ее типа данных. Тип данных – это множество величин, объединенных определенной совокупностью допустимых операций. Каждый тип имеет свой диапазон значений и специальное зарезервированное слово для описания. Все типы данных можно разделить на две группы: скалярные (простые) и структурированные (составные). Простые типы данных также делятся на стандартные и пользовательские. Стандартные – предлагаются разработчиками Турбо Паскаля, а пользовательские разрабатывают сами программисты.
Представим типы данных в виде схемы:
В данном учебном пособии будут рассмотрены лишь основные типы данных, используемые наиболее часто. С другими интересующими типами данных можно познакомиться в специальной литературе (например, [3]). Рассмотрим пока лишь простые типы данных, структурированные типы требуют отдельного, более тщательного рассмотрения.
Процедуры и функции языка Pascal
Не люблю суеты. Ни на сцене, ни в жизни…
Лишние слова тоже не нужны.
(Майя Плисецкая)
Статья представляет собой свободный конспект урока для смешанного обучения по теме «Процедуры и функции языка Pascal» через призму олимпиадной подготовки. Основная идея данного урока в том, что он может проведен в разных возрастных группах, с разным уровнем начальной подготовки учащихся, формируя для них индивидуальные образовательные траектории, благодаря очень доступному объяснению материала и ранжированию задач. К уроку прилагается интерактивная презентация с тестом в формате SWF, разработанная в среде iSpring Suite. Формат теста для проверки знаний обучающихся позволяет легко размещать ресурс в сети Internet.
Различие процедур и функций. Функции являются частным случаем процедур и принципиально отличаются от них тем, что:
Пример стандартных математических функций, которые мы использовали в программах, решая математические задачи на вычисления (SIN,COS,SQR, SQRT )).
Глобальные и локальные переменные. Все имена, представленные в разделе описаний основной программы, называются глобальными. Они действуют как в разделе операторов основной программы, так и в любой подпрограмме. Имена, представленные в разделе описаний подпрограммы, называют локальными. Они действуют только в рамках подпрограммы и недоступны операторам основной программы.
Приведем пример простой программы сложения двух чисел c использование подпрограммы и без. Стрелками указано куда программа возвращает управление после выполнения процедуры:
Теперь разберемся с параметрами.
1. Параметры формальные и фактические.
При описании процедуры указывается список формальных параметров. Каждый параметр является локальным по отношению к описываемой процедуре, к нему можно обращаться только в пределах данной процедуры (в нашем примере х, у, z — формальные параметры). Фактические параметры — это параметры, которые передаются процедуре при обращении к ней (а, b, с — фактические параметры). Число и тип формальных и фактических параметров должны совпадать с точностью до их следования. В качестве формальных параметров могут быть только переменные с указанием типа, а в качестве фактических параметров могут быть константы, переменные, выражения без указания их типа.
2. Параметры-значения.
Другими словами, передача параметров по значению. Копия фактического параметра становится значением соответствующего формального параметра. Внутри процедуры можно производить любые действия с данным формальным параметром (допустимые для его типа), но эти изменения никак не отражаются на значении фактического параметра, то есть каким он был до вызова процедуры, то таким же и останется после завершения ее работы (х, у — параметры-значения).
3. Параметры-переменные.
Другими словами, передача параметров по ссылке. Это те формальные параметры, перед которыми стоит идентификатор Var. Передается адрес фактического параметра (обязательно переменной). Любые операции с формальным параметром выполняются непосредственно над фактическим параметром, т.е мы передаем процедуре «ключ от квартиры где деньги лежат» :).
А нужны ли вообще эти функции, помогают ли они сделать нашу жизнь легче. Сейчас мы посмотрим одну программу где знание простейших стандартных функций работы с символами позволяет решить олимпиадную задачу на тему большие числа (длинная арифметика) в две строчки, оказывается даже маленькая стандартная функция умеет решать олимпиадные задачи на большие числа:).
ЗАДАЧА: Во входном файле записано натуральное число не превышающее 10100. Требуется найти сумму цифр этого числа.
Входные данные: В единственной строке входного файла INPUT.TXT записано одно число.
Выходные данные: В файл OUTPUT. TXT выведите сумму цифр числа.
Пример: INPUT. TXT 1111111111, OUTPUT. TXT 10.
var x: char; res: integer; input, output: text;
begin
res:=0;
Assign(input,’input.txt’);
Reset(input); Assign(output,’output.txt’);
Rewrite(output);
while not EOF (input) do begin
Read(input,x); res:= res + (ord(x)-48);
end;
Write(output,res);
Close(input); Close(output);
end.
Суть решения в том, что наше длинное число нужно представить в виде строки, либо считать из файла каждую цифру как символ. А дальше использовать функцию ORD.
Как мы видим, если из кода символа (который представляет цифру) просто вычесть код нуля (48), то мы получим нашу цифру, (т.е. символ «5» превращается в цифру 5), и числа остается только сложить! Всего лишь одна функция, а сколько пользы.
Вопросы теста для первичного закрепления материала: см. Приложение1.
В зависимости от того, насколько мы поняли тему, и каких результатов хотим достичь на данном уроке, предлагается самостоятельно оценить свой уровень знания программирования, ответив на вопросы, которые помогут выбрать уровень сложности задачи для самостоятельного решения:
1. Хочу отработать данную тему на очень простых задачах с целью лучше понять материал урока (задачи с одной звездочкой*)
2. Хочу отработать данную тему на задачах средней сложности (небольших по объему), которые включают себя хорошие знания разобранных ранее тем. (задачи с двумя звездочками **)
3. Хочу отработать данную тему на сложных (небольших по объему) задачах, которые позволят подготовиться к решению задач олимпиадного уровня. (задачи с тремя звездочками***)
В группах задачи также расположены с постепенным увеличением сложности, которое отмечено знаком (!).
КРАТКАЯ СПРАВКА ПО МАТЕМАТИКЕ ДЛЯ РЕШЕНИЯ ЗАДАЧ
1. Факториал
Произведение n первых натуральных чисел называется n-факториал и обозначается n!; По определению: .
Перестановки без поворений
Теорема: число способов расположить в ряд n различных объектов есть
4. Палиндром (число которое одинаково читается слева направо и справа налево):
ПРАКТИЧЕСКАЯ ЧАСТЬ
Задачи подобраны с учетом постепенного возрастания сложности и сопровождаются полными текстами решений на языке программирования Pascal, в том числе предназначенными для детального анализа учащимися, поиска неточностей, создания улучшенных собственных вариантов программ, анализа допустимых диапазонов исходных данных и т.д.
Задача1*!. Для делимости на 5 необходимо, чтобы последняя цифра числа была 0 или 5. Написать функцию проверки делимости числа n, вводимого с клавиатуры, на 5.
Фрагмент решения
Function Div5(x : Integer ) : Boolean;
Begin
Div5 := (x Mod 10 = 0) or (x Mod 10 = 5);
End;
Задача3*. (В качестве справочного материала можно раздать формулы для вычисления площадей фигур, если класс еще не проходил данную тему по математике)
Написать функции для вычисления площадей кругов, прямоугольников и треугольников.
Задача4**!. Дано n целых чисел. Подсчитать количество чисел, в записи которых нет цифры 8.
Задача 5**!!. Среди трехзначных чисел найти такие, в которых сумма факториалов цифр равнялась бы самому числу.
Задача 6***. Дана шахматная доска размером n*n и n ладей. Определить количество способов расположения ладей на шахматной доске так, чтобы они не могли бить друг друга.
Исследовать, для каких значений n работоспособны типы данных Integer, Word, LongInt.
Function Rook(n:Integer) : LongInt;
Begin;
If n 0 Do Begin
x :=x*10+n Mod 10;
n := n Div 10;
End;
Pal :=x;
End;
Begin <Основная программа >
For i := a To b Do Begin
cnt := 0; n := i;
While Pal(n)<>n Do Begin
t := Pal(n);
n := n+t;
Inc(cnt);
End;
WriteLn(i,»,cnt);
End;
End.
Задача 6**! Дано n целых чисел. Найти среди них число, у которого сумма цифр имеет максимальное значение.
самоучитель Паскаль он-лайн
Он-лайн самоучитель Паскаль
Процедуры и функции для работы с файлами
Ниже описываются процедуры и функции, которые можно использовать с файлами любого вида. Специфика работы с типизированными, текстовыми и нетипизированными файлами рассматривается в следующих разделах.
Закрывает файл, однако связь файловой переменной с именем файла, установленная ранее процедурой ASSIGN, сохраняется. Формат обращения:
При создании нового или расширении старого файла процедура обеспечивает сохранение в файле всех новых записей и регистрацию файла в каталоге. Функции процедуры CLOSE выполняются автоматически по отношению ко всем открытым файлам при нормальном завершении программы. Поскольку связь файла с файловой переменной сохраняется, файл можно повторно открыть без дополнительного использования процедуры ASSIGN.
Переименовывает файл. Формат обращения:
Уничтожает-файл. Формат обращения:
Перед выполнением процедуры необходимо закрыть файл, если он ранее был открыт процедурами RESET, REWRITE или APPEND.
name_bak := copy(name,1,k-1) + bak;
if lOResult <> 0 then
if lOResult = 0 then
вызовет ошибку в случае, если такой файл существует.
Очищает внутренний буфер файла и, таким образом, гарантирует сохранность всех последних изменений файла на диске. Формат обращения:
Любое обращение к файлу в Турбо Паскале осуществляется через некоторый буфер, что необходимо для согласования внутреннего представления файлового компонента (записи) с принятым в ДОС форматом хранения данных на диске. В ходе выполнения процедуры FLUSH все новые записи будут действительно записаны на диск. Процедура игнорируется, если файл был инициирован для чтения процедурой RESET.
Функция EOF ( ) : BOOLEAN.
Изменение текущего каталога. Формат обращения:
Позволяет определить имя текущего каталога (каталога по умолчанию). Формат обращения:
— переменная типа STRING, в которой возвращается путь к текущему каталогу на указанном диске.
Создает новый каталог на указанном диске. Формат обращения:
Удаляет каталог. Формат обращения:
Удаляемый каталог должен быть пустым, т.е. не содержать файлов или имен каталогов нижнего уровня.
Функция IORESULT: WORD.
Возвращает условный признак последней операции ввода-вывода.
Если операция завершилась успешно, функция возвращает ноль. Коды ошибочных операций ввода-вывода представлены в прил.З. Следует помнить, что IORESULT становится доступной только при отключенном автоконтроле ошибок ввода-вывода. Директива компилятора <$I->отключает, а директива <$I+>включает автоконтроль. Если автоконтроль отключен, а операция ввода-вывода привела к возникновению ошибки, устанавливается флаг ошибки и все последующие обращения к вводу-выводу блокируются, пока не будет вызвана функция IORESULT.
Функция DISKFREE ( ) : LONGINT.
Функция DISKSIZE ( ) : LONGINT.
Возвращает атрибуты первого из файлов, зарегистрированных в указанном каталоге. Формат обращения:
При формировании маски файла используются следующие символы-заменители ДОС:
* означает, что на месте этого символа может стоять сколько угодно (в том числе ноль) разрешенных символов имени или расширения файла;
? означает, что на месте этого символа может стоять один из разрешенных символов.
a?.dat выбирает имена файлов типа a0.dat, az.dat и т.д.
Маске может предшествовать путь’. Например, команда
Результат работы процедуры FINDFIRST возвращается в переменной типа SEARCHREC. Этот тип в модуле DOS. TPU определяется следующим образом:
Fill : array [1..21] of Byte;
UNPACKTIME(Time: Longlnt; var T:DateTime).
В модуле DOS. TPU объявлен следующий тип DateTime:
Результат обращения к процедуре FINDFIRST можно проконтролировать с помощью функции DOSERROR типа WORD, которая возвращает значения:
Возвращает имя следующего файла в каталоге. Формат обращения:
Следующая простая программа иллюстрирует способ использования процедур FINDFIRST и FINDNEXT. Программа выводит на экран список всех PAS-файлов текущего каталога:
while DosError = 0 do begin
Возвращает время создания или последнего обновления файла. Формат обращения:
Устанавливает новую дату создания или обновления файла. Формат обращения:
Упаковать запись типа DATETIME в переменную типа LONGINT можно процедурой
PACKTIME (var T:DateTime; var Time:LongInt).
(Описание типа DA TETIME см. выше).
Позволяет получить атрибуты файла. Формат обращения:
Позволяет установить атрибуты файла. Формат обращения:
Функция FSEARCH: PATHSTR.
Ищет файл в списке каталогов. Формат вызова:
Результат поиска возвращается функцией FSEARCH в виде строки типа PATHSTR. В строке содержится путь и имя файла, если поиск был успешным, в противном случае возвращается пустая строка.
Тип PATHSTR в модуле DOS.TPU объявлен следующим образом:
FSEARCH (‘MYFILE,PAS’,’\SUB; \SUBDIR’).
вернет строку \SUBDIR\MYFILE.PAS, а обращение
вернет пустую строку. Однако, если текущим установлен каталог SUBDIR, то в обоих случаях вернется строка MYFILE.PAS (если файл находится в текущем каталоге,в выходной строке путь к нему не указывается).
«Расщепляет» имя файла, т.е. возвращает в качестве отдельных параметров путь к файлу, его имя и расширение. Формат обращения:
— переменная типа DIRSTR=STRING [67], в которой возвращается путь к файлу;
— переменная типа NAMESTR=STRING [8], в которой возвращается имя файла;
— переменная типа EXTSTR=STRING [4], в которой возвращается расширение с предшествующей ему точкой.
Процедура не проверяет наличие на диске указанного файла. В качестве входного параметра может использоваться переменная типа PATHSTR.
Функция FEXPAND: PATHSTR.
Дополняет файловое имя до полной спецификации, т.е. с указанием устройства и пути. Формат вызова: