Текстовые переменные в паскале

Текстовые переменные в паскале

Введение файлового типа в язык Паскаль вызвано необходимостью обеспечить возможность работы с периферийными (внешними) устройствами ЭВМ, предназначенными для ввода, вывода и хранения данных.

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

Понятие файла достаточно широко. Это может быть обычный файл на диске, коммуникационный порт ЭВМ, устройство печати, клавиатура или другие устройства.

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

Файлы на внешних устройствах часто называют физическими файлами. Их имена определяются операционной системой. В программах на языке Паскаль имена файлов задаются с помощью строк. Например, имя файла на диске может иметь вид:

Типы файлов Турбо Паскаль

Турбо Паскаль поддерживает три файловых типа:

  • текстовые файлы;
  • типизированные файлы;
  • нетипизированные файлы.

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

file of тип — типизированный файл (указан тип компоненты);
text — текстовый файл;
file — нетипизированный файл.

Примеры описания файловых переменных:

Стандартные процедуры и функции

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

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

После связи файловой переменной с дисковым именем файла в программе нужно указать направление передачи данных (открыть файл). В зависимости от этого направления говорят о чтении из файла или записи в файл.

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

Если f — типизированный файл, то процедурой reset он открывается для чтения и записи одновременно.

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

закрывает открытый до этого файл с файловой переменной f. Вызов процедуры Close необходим при завершении работы с файлом. Если по какой-то причине процедура Close не будет выполнена, файл все-же будет создан на внешнем устройстве, но содержимое последнего буфера в него не будет перенесено.

возвращает значение TRUE, когда при чтении достигнут конец файла. Это означает, что уже прочитан последний элемент в файле или файл после открытия оказался пуст.

позволяет переименовать физический файл на диске, связанный с файловой переменной f. Переименование возможно после закрытия файла.

уничтожает физический файл на диске, который был связан с файловой переменной f. Файл к моменту вызова процедуры Erase должен быть закрыт.

возвращает целое число, соответствующее коду последней ошибки ввода — вывода. При нормальном завершении операции функция вернет значение 0. Значение функции IOResult необходимо присваивать какой-либо переменной, так как при каждом вызове функция обнуляет свое значение. Функция IOResult работает только при выключенном режиме проверок ошибок ввода — вывода или с ключом компиляции <$I->.

Работа с типизированными файлами

Типизированный файл — это последовательность компонент любого заданного типа (кроме типа "файл"). Доступ к компонентам файла осуществляется по их порядковым номерам. Компоненты нумеруются, начиная с 0. После открытия файла указатель (номер текущей компоненты) стоит в его начале на нулевом компоненте. После каждого чтения или записи указатель сдвигается к следующему компоненту.

Процедура записывает в файл f всю информацию из списка переменных.

Чтение из файла:

Процедура читает из файла f компоненты в указанные переменные. Тип файловых компонент и переменных должны совпадать. Если будет сделана попытка чтения несуществующих компонент, то произойдет ошибочное завершение программы. Необходимо либо точно рассчитывать количество компонент, либо перед каждым чтением данных делать проверку их существования (функция eof, см. выше)

Смещение указателя файла:

Процедура смещает указатель файла f на n-ную позицию. Нумерация в файле начинается с 0.

Определение количества компонент:

Функция возвращает количество компонент в файле f.

Определение позиции указателя:

Функция возвращает порядковый номер текущего компонента файла f.

Отсечение последних компонент файла:

Процедура отсекает конец файла, начиная с текущей позиции включительно.

Читайте также:  И тут почувствовал что начал гаснуть

Работа с текстовыми файлами

Текстовый файл — это совокупность строк, разделенных метками конца строки. Сам файл заканчивается меткой конца файла. Доступ к каждой строке возможен лишь последовательно, начиная с первой. Одновременная запись и чтение запрещены.

Чтение из текстового файла:

Процедуры читают информацию из файла f в переменные. Способ чтения зависит от типа переменных, стоящих в списке. В переменную char помещаются символы из файла. В числовую переменную: пропускаются символы-разделители, начальные пробелы и считывается значение числа до появления следующего разделителя. В переменную типа string помещается количество символов, равное длине строки, но только в том случае, если раньше не встретились символы конца строки или конца файла. Отличие ReadLn от Read в том, что в нем после прочтения данных пропускаются все оставшиеся символы в данной строке, включая метку конца строки. Если список переменных отсутствует, то процедура ReadLn(f) пропускает строку при чтении текстового файла.

Запись в текстовый файл:

Процедуры записывают информацию в текстовый файл. Способ записи зависит от типа переменных в списке (как и при выводе на экран). Учитывается формат вывода. WriteLn от Write отличается тем, что после записи всех значений из переменных записывает еще и метку конца строки (формируется законченная строка файла).

Добавление информации к концу файла:

Процедура открывает текстовый файл для добавления информации к его концу. Используйте эту процедуру вместо Rewrite.

Работа с нетипизированными файлами

Нетипизированные файлы — это последовательность компонент произвольного типа.

Открытие нетипизированного файла:

Параметр BufSize задает число байтов, считываемых из файла или записываемых в него за одно обращение. Минимальное значение BufSize — 1 байт, максимальное — 64 К байт. Если BufSize не указан, то по умолчанию он принимается равным 128.

Чтение данных из нетипизированного файла:

Эта процедура осуществляет за одно обращение чтение в переменную X количества блоков, заданное параметром Count, при этом длина блока равна длине буфера. Значение Count не может быть меньше 1. За одно обращение нельзя прочесть больше, чем 64 К байтов.

Необязательный параметр QuantBlock возвращает число блоков, прочитанных текущей операцией BlockRead. В случае успешного завершения операции чтения QuantBlock = Count, в случае аварийной ситуации параметр QuantBlock будет содержать число удачно прочитанных блоков. Отсюда следует, что с помощью параметра QuantBlock можно контролировать правильность выполнения операции чтения.

Запись данных в нетипизированный файл:

Эта процедура осуществляет за одно обращение запись из переменной X количества блоков, заданное параметром Count, при этом длина блока равна длине буфера.

Необязательный параметр QuantBlock возвращает число блоков, записанных успешно текущей операцией BlockWrite.

Для нетипизированных файлов можно использовать процедуры Seek, FIlePos и FileSize, аналогично соответствующим процедурам типизированных файлов.

Волгоградский государственный педагогический университет
Кафедра алгебры, геометрии и информатики

Вычислительные машины имеют дело не только с числами. Едва ли не больше времени они бывают заняты обработкой текста. В Паскале для этого есть специальный тип данных, который называется CHAR (от слова character — символ).

12.1.Тип CHAR (символьный или строковый или литерный).
Его значениями являются отдельные символы: буквы, цифры, знаки. Символьные константы заключаются в кавычки, например, ‘A’, ‘B’, ‘C’, ‘4’, ‘7’, ‘ ‘(пробел).

Символьные переменные описываются предложением:

Var имя переменной : char;

Символьные значения можно вводить и выводить, присваивать, сравнивать. Ниже приведен пример, где выполняются все эти действия.

Var x,y:char;
Begin
Write(‘Введите символ’);
Readln(x);
Y:=’A’;
If x =, ,<>.

12.2.Стандартные символьные функции.
В Паскале имеются стандартные символьные функции:

CHR(N) — возвращает в программу символ с кодом N,
ORD(S) — возвращает код символа S,
PRED(S) -возвращает предыдущий символ
SUCC(S) — возвращает следующий символ

Примеры:
CHR(128) = Б
ORD(‘:’) = 58
PRED(‘Б’) = А
SUCC(‘Г’) = Д

Каждый символ имеет свой уникальный двоичный код. Коды всех символов сведены в таблицу. Первая половина таблицы стала международным стандартом, который называется ASCII — American Standard Code Information Interchange ( читается "аски код") в ней кроме прочего содержится латинский алфавит, вторая имеет разные варианты для разных языков. Кириллица (русский алфавит) имеет несколько стандартов. В Паскале используется стандарт КОИ-8.

Пример использования переменной символьного типа.
Составить программу, по которой компьютер многократно вычисляет сумму А+В при различных значениях А и В. в конце каждого этапа появляется запрос о продолжении или прекращении вычислений: "Завершить программу?(Д/Н)".

Тренировочные задания.
1. Что вернет функция CHR(ORD(X))?
2. Определить значения следующих функций (как правило таблица аски кодов есть в любом справочнике по программированию):
CHR(68)
ORD(‘d’)
PRED(1)
SUCC(‘Я’)
3. С клавиатуры вводится два числа. Составить программу сравнивающую эти числа и в зависимости от результата сравнения выводящую на экран нужный знак. Например: 3 2. Процедуру WRITE для вывода результата разрешается использовать только один раз.
4. Составить программу, по которой компьютер находит произведение нечетных чисел, начиная с единицы, и до тех пор, пока на вопрос, задаваемый после каждого шага вычислений: "Продолжить вычисления? (Д/Н)", отвечают ‘Д’.

Читайте также:  Honor note 10 старт продаж в россии

В ы уже познакомились с символьным типом данных CHAR, который позволяет работать с отдельными символами текста. Для обработки более крупных текстовых единиц — строк введен тип данных, который называется STRING (строка).

Значениями этого типа являются строки любых символов длиной до 255.
Переменные строки должны быть описаны предложением:

Строки можно присваивать, сравнивать, вводить, выводить и соединять. Соединение обозначается знаком "+". Вот примеры некоторых операций сравнения над строками:

‘стол’ Var
a,b:string[4];
begin
write(‘ введите слово ‘);
readln(a);
write(a);
readln
end.

Если при выполнении этой программы ввести слово КУКУРУЗА, то программа выведет КУКУ.

ЗАПОМНИТЕ . Если при выполнении программы необходимо ввести значение для нескольких строковых переменных, для каждой из них должен быть указан свой оператор ввода READLN. Например ,

Var
a,b,c:string;
begin
readln(a);
readln(b);
readln(c);
write(a+b+c);
readln
end.

Проверьте, что произойдет, если записать READLN(a,b,c); или READ(a,b,c).

Пример 1.
Составить программу определяющую, какая из двух фамилий длиннее. Фамилии имеют разную длину.

Var
a,b:string;
begin
readln(a);
readln(b);
if length(a)>length(b) then write(a) else write(b);
readln
end.

Пример 2.
Даны два слова. Составить программу определяющую верно ли, что первое слово начинается на ту же букву, которой оканчивается второе слово.

Тренировочные задания.
1. Дано название города. Определить, четно или не четно количество символов в нем.
2. Дано слово. Вывести на экран его третий символ и дважды его последний символ.
3. Дано слово. Верно ли, что оно начинается и оканчивается на одну и ту же букву?
4. Дано слово. Получить и вывести на экран буквосочетание, состоящее из его третьего и последнего символа.
5. Составить программу которая запрашивает название футбольной команды и повторяет его на экране со словами: "Это чемпион!".

1. Дано натуральное число N. Определить, является ли оно палиндромом. Число палиндром можно читать справа налево и слева направо: 4 88 121 767767 и т.д.

var k,n,m:longint;
begin
Repeat
write(‘Введите натуральное число ‘); readln(n);
until n>0;
m:=n; k:=0;
while m div 10<>0 do <собираем число в обратном порядке>
begin
k:=k*10+m mod 10;
m:=m div 10
end;
k:=k*10+m mod 10;
if k=n then writeln(‘данное число палиндром’)
else writeln(‘это не палиндром’);
readln;
end.

3. Дано натуральное число. Найти:
a. Число, получаемое при прочтении его цифр справа налево;
b. Число, получаемое в результате приписывания по двойке в начало и конец записи исходного числа;
c. Число, получаемое удалением из исходного всех цифр А;
d. Число, получаемое из исходного перестановкой его первой и последней цифр;
e. Число, образованное из исходного приписыванием к нему такого же числа.

<б>
Repeat <проверка ввода>
write(‘Введите натуральное число ‘); readln(n);
until n>0;
m:=n;
k:=10;
while m div 10<>0 do <определяем разрядность числа>-
begin
k:=k*10;
m:=m div 10;
end;
m:=(2*k+n)*10+2;
writeln(‘число c двойками=’,m);

<в>
Repeat <проверка ввода>
write(‘Введите натуральное число ‘); readln(n);
until n>0;
Repeat <проверка ввода>
write(‘Введите цифру ‘);readln(a);
until (a>=0) and (a 0 do <собираем число исключая цифру>
begin
if m mod 10<>a then
begin
p:=p+(m mod 10)*k;
k:=k*10
end;
m:=m div 10;
end;
if m mod 10<>a then p:=p+m mod 10*k;
writeln(‘число без цифры ‘,a:2,’=’,p);

<г>
Repeat <проверка ввода>
write(‘Введите натуральное число больше 9=’); readln(n);
until n>9;
m:=n; k:=10; p:=0;
a:=m mod 10;
m:=m div 10;
while m div 10<>0 do <собираем число, исключая цифру>
begin
p:=p+(m mod 10)*k;
k:=k*10;
m:=m div 10
end;
p:=a*k+p+m;
writeln(‘число с перестановкой первой и последней цифр ‘,a:2,’=’,p);

<д>
Repeat <проверка ввода>
write(‘Введите натуральное число ‘); readln(n);
until (n>0)and(n 0 do <определяем разрядность>
begin
k:=k*10;
m:=m div 10
end;
p:=n*k+n;
writeln(‘число= ‘,a:2,’=’,p);
readln;
end.

Из предыдущего урока вы узнали, что можно обращаться к отдельным символам строки, указав их порядковый номер. Сегодня мы разберем задачи, в которых используется это свойство строковой переменной.

Пример 1.
Дано слово, состоящее из четного числа букв. Вывести на экран его первую половину.

Var i,x:byte;
a:string;
begin
repeat
write(‘Введите слово из четного числа букв’);
readln(a);
x:=length(a); <определяем длину слова>
until (x mod 2 = 0);
x:= x div 2; <применяем целочисленное деление>
for i:=1 to x do write(a[i]);
readln
end.

Читайте также:  Удаление плиток в windows 10

Пример 2.
Составить программу, которая печатает заданное слово в обратном порядке.

Var i,x:byte;
a:string;
begin
write(‘ Введите слово ‘);
readln(a);
x:=length(a); < определяем длину слова >
for i:=x downto 1 do write(a[i]);
readln
end.

Пример 3.
Дано предложение . Определить число пробелов в нем .

Var i,x,k:byte;
a:string;
begin
write(‘ Введите предложение ‘);
readln(a);
x:=length(a); < определяем длину слова >
k:=0;
for i:=1 to x do if a[i]=’ ‘ then k:=k+1;
writeln(k);
readln
end.

Пример 4.
Дано предложение. Определить порядковый номер первой встреченной буквы ‘к’. Если такой буквы нет, сообщить об этом.

Var i,x,k,f:byte;
a:string;
begin
write(‘ Введите предложение ‘);
readln(a);
x:=length(a);< определяем длину слова >
k:=0; I:=0; f:=0;
repeat
I:=I+1;
if a[i]<>’ к ‘ then k:=k+1 else f:=1;
until (I=x)or( a[i]=’ к ‘ );
if f=1 then writeln(k) else writeln(‘ Нет такой буквы ‘);
readln
end.

Тренировочные задания.
1. Дано слово. Получить его часть, образованную идущими подряд буквами, начиная с m-й и кончая n-й (m Var x:byte;
a:string;
begin
write(‘ Введите слово ‘);
readln(a);
x:=length( а );
if odd(x) then write(‘ не четно ‘) else write(‘ четно ‘);
readln
end.

Значение функции odd(x) истинно, если число x не четное.

2. Дано слово. Вывести на экран его третий символ и дважды его последний символ.
3. Дано слово. Верно ли, что оно начинается и оканчивается на одну и ту же букву?
4. Дано слово. Получить и вывести на экран буквосочетание, состоящее из его третьего и последнего символа.

Var x:byte;
a:string;
begin
repeat
write(‘ Введите слово не менее четырех букв ‘);
readln(a);
x:=length(a); < определяем длину слова >
until x>= 4;
write(a[3],a[x]);
readln
end.

5. Составить программу которая запрашивает название футбольной команды и повторяет его на экране со словами: "Это чемпион!".

Var a:string;
begin
write(‘Введите название футбольной команды’);
readln(a);
write(a, ‘ Это чемпион!’);
readln
end.

В этом уроке речь пойдёт о переменных в языке Pascal. Давайте попробуем на образах понять, что же такое переменная.

Переменная представляет собой «ящик», в который мы можем что-то положить, что-то заменить и что-то удалить, и у этого ящика есть какой-то размер, получается в него может поместится далеко не всё.

Мы можем что-то достать из ящика и показать это, потом положить обратно.

Получается — переменная своеобразный ящик, с которым можно работать.

Насчёт содержимого ящика: в зависимости от типа ящика, можно положить в него различные предметы.

Так же и с переменными в Pascal: им задаётся специальный тип, благодаря которому в переменную можно положить ( записать ), например числа, или строковые значения.

Отличие языка Паскаль от других в том, что этот язык дисциплинирует программиста, в Паскаль всё строго — все типы переменных должны соответствовать их содержимому. О типах переменных мы с Вами поговорим в следующем уроке.

Если давать определение как в умных книжках, то

Переменная — содержит в себе адрес области ( ячейки ) памяти, которая выделяется в момент компиляции ( запуска ) программы, и при помощи переменной мы можем получить «доступ» к той области ( ячейки ) памяти и выполнить какие-то действия с данными, которые там находятся.

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

Все переменные в языке Паскаль ( Pascal — как Вам удобнее ) должны быть объявлены в разделе — var.

До этого мы говорили о структуре Паскаль, и там мы упоминали об этом разделе.

Поскольку язык Паскаль — строгий язык, то и объявление переменных должно быть соблюдено верно.

Мы должны сначала написать слово — var — это зарезервированное слово — поэтому его можно использовать только в объявлении переменных.

После слова var мы можем объявлять переменные, что мы имеем в виду под словом объявлять — в программе в разделе var, если он есть в программе, будут считываться все переменные и их типы, после в памяти будут выделены ячейки с определёнными типами, и нашим переменным будут присвоены адресы к этим ячейкам ( областям ) памяти, после чего в них можно будет записывать именно те данные, которые будут соответствовать типу переменных.

И так, насчёт объявления переменных, пишем var, после перечисляем названия переменных на английском языке через запятую, после последней переменной ставится двоеточие и пишется тип этих переменных. Вот пример:

Ссылка на основную публикацию
Тарифы мтс смарт 400 руб
С того момента как тариф «Смарт» стал доступен для активации, он претерпел множество изменений. Они касаются размера абонентской платы, количества...
Сталкер зов припяти лучшее оружие в игре
S.T.A.L.K.E.R.: Call of Pripyat 4,260 уникальных посетителей 105 добавили в избранное "Уникальная модель пистолета СИП-т М200. Была выпущена малой партией...
Сталкер зов припяти много оружия
Для Всех любителей отличного отечественного шутера S.T.A.L.K.E.R.Зов Припяти представлен новый Оружейный мод Автоматы Штурмовые винтовки:1. АК-472. АКS-47 тактический3. АК-113 "Монгол"4....
Тарифы ростелекома на домашний интернет
Полный список актуальных тарифов Ростелеком для города Москва. Подключай тарифы Rostelecom в Москве бесплатно и пользуйся качественными услугами интернета и...
Adblock detector