Какой символ ставится в конце каждой строки в паскале
Перейти к содержимому

Какой символ ставится в конце каждой строки в паскале

Какой символ ставится в конце каждой строки в паскале

Введение

Линейные алгоритмы

Алгоритмы с ветвлением

Алгоритмы с повторением

Одномерный массив (вектор)

Двумерный массив (матрица)

Пользовательские процедуры и функции

Строки

Множества

Записи

Файлы

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

Например, строкой является
В жизни всё закономерно

Следует знать, что Паскаль налагает на использование строк некоторые ограничения. Во-первых, их длина не может превышать 255 символов. Во-вторых, все строки в программе должны быть заключены в апострофы. Т.е.
‘Быть или не быть, вот в чем вопрос!’

И наоборот, все, что стоит между двумя апострофами, является строкой Например
‘a := sin(x) + 5.65’
тоже строка, а не оператор присваивания.

В строках могут использоваться любые символы, которые только Вы сумеете набрать на клавиатуре — даже русские буквы. Не может быть элементом строки только один символ, а именно апостроф. Причины понятны — он отмечает начало и конец строки.
В Паскале строка определяется как произвольная последовательность символов длиной не более 255 символов, заключенная в апострофы.

Тип строка в Паскале имеет два названия. Исторически первое выглядит так:
var s: packed array [1..50] of char;

(т.е. упакованный символьный массив). Впоследствии его заменили на более короткое и понятное:
var s: string[50];

( string в переводе строка). Можете пользоваться любым. Объявление строки максимальной (255) длины еще короче:
var s: string;

Тип string — уникальный в том смысле, что им можно пользоваться одновременно и как единым значением (так, как мы используем целую переменную), и как массивом. Этим строка отличается от простого (неупакованного) символьного массива. Такой массив — обыкновенный, и все ниже сказанное к нему не относится, хотя формально он тоже последовательность символов.
В типе string (но не packed array) элемент с номером 0 используется для хранения длины строки. Сами символы-элементы строки имеют номера от 1 до последнего.

В строке, объявленной как string[50], можно хранить строки любой длины, лишь бы она не превосходила 50-ти.

Работа со строками.

Строки как единое значение можно:
— присваивать
— складывать
— вводить
— выводить
— сравнивать

В отличие от всех других массивов строки вводятся/выводятся одним оператором, без цикла!
Разберем эти действия.

1. Присваивание строк. Присваивать можно любую строку любой, независимо от объявления. Необходимо только следить за тем, чтобы строка "влезла" в строковую переменную. Другими словами, если строковая переменная объявлена как string[50], нельзя запихнуть в нее строку из 100 символов. Также можно присвоить строковой переменной символьную (символ можно назвать строкой из 1-го элемента), но не наоборот. Пример присваивания:
s := ‘String переводится как строка’;

2. Сложение строк. Такое сложение называется конкатенацией или катенацией и применяется для соединения нескольких строк в одну. Например, после выполнения оператора
s := ‘Иван’ + ‘ Васильевич’;

в переменной s будет содержаться строка ‘Иван Васильевич’. Как, надеюсь, Вы уже поняли, операция сложения строк обозначается +. Операция сложения применима только к строкам типа string.

3. Ввод/вывод строк. Для того, чтобы ввести строку s, достаточно написать
readln(s);
А чтобы вывести:
writeln(s);

4. Сравнение строк. К строкам применимы все операции сравнения: = (на равенство), <> (на неравенство) и т.п.

С другой стороны, строка — это массив, и каждый элемент ее — символ. Строку можно обрабатывать поэлементно, иначе говоря, с ней можно обращаться как с обыкновенным символьным массивом. И выполнять любые операции, разрешенные в данном случае (см. Одномерные массивы). В частности, 5-тый символ строки s имеет имя s[5], как обычно.
Впрочем, есть одно очень важное отличие строковых переменных — это массивы переменной длины. Их длина заранее неизвестна, она зависит от того, какую строку мы присвоили строковой переменной. Длина эта хранится в 0-м элементе строковой переменной. Сами символы хранятся в элементах начиная с 1-го. Таким образом, если мы напишем
s := ‘abc’
то s[0] = 3, s[1] = ‘a’, s[2] = ‘b’, s[3] = ‘c’. Остальные элементы строки (4-ый, 5-ый и т.д.), если они есть, неопределены. Скорее всего, там хранится всякий мусор.

Однако не рекомендуется получать длину строки s как s[0]. Для этого в Паскале существует специальная функция length(s). Она возвращает длину строки, переданной ей в качестве параметра. Такой способ безопасней и надежней.
Например, так можно перебрать всю строку по символам (операция, которая часто встречается в задачах):
var s: string[50];
i: integer;
.
begin
.
readln(s);
.
for i := 1 to length(s) do
begin
<что-то сделать с символом s[i]>
end;
.
end.
Так как элемент строки имеет тип char, над ним можно производить все операции, разрешенные для этого типа данных.

Стандартные функции работы со строковыми переменными.

В Паскале есть несколько стандартных функций и процедур для работы со строковыми данными. Вот их спецификации:

1. Функция Length( <строка> ) : integer
Возвращает длину строки-параметра в символах. Например, length(‘abc’) будет равно 3-м.

2. Функция Concat( <строка> [,<строка>, <строка> . ] ) : string

Возвращает строку, являющуюся объединением (конкатенацией) всех параметров функции. Эта функция является аналогом операции сложения.
Параметров — произвольное число. Все параметры должны иметь тип
string. Например, concat(‘a’, ‘bc’, ‘!!’) будет ‘abc!!’.

3. Функция Copy( <строка>, <позиция>, <сколько> ) : string

В качестве результата возвращает подстроку <строки>, начинающуюся с символа номер <позиция> длиной <сколько> символов (как бы вырезает часть <строки>). Параметры <позиция> и <сколько> должны быть целыми выражениями. Например, результатом вызова copy(‘1234567890’,3,4) будет строка ‘3456’.

4. Функция Pos( <подстрока>, <строка> ) : byte

Определяет, содержится ли <подстрока> в <строке>. Если да, возвращает номер символа, с которого начинается <подстрока> в <строке>. Если нет, возвращает 0. Например, результатом pos(‘123’, ‘ab123cde’) будет 3, т.к. строка ‘123’ в строке ‘ab123cde’ содержится и начинается с позиции 3.

5. Процедура Delete( var <строка>, <позиция>, <сколько> )

Удаляет из <строки> <сколько> символов, начиная с символа номер <позиция>. По действию похожа на Copy, но вырезанная часть исчезает из <строки>. Параметр <строка> должен быть переменной строкового ти-
па, параметры <позиция> и <сколько> — выражениями целого типа. Например, пусть строка s = ‘123456789’. Тогда после выполнения процедуры delete(s,5,2) строка s будет равна ‘1234789’.

6. Процедура Insert( <строка>, var <строка-куда>, <позиция> )

Вставляет <строку> в <строку-куда>, начиная с символа номер <позиция>. Противоположна по действию процедуре Delete. Параметр <строка-куда> должен быть строковой переменной, параметр <позиция> —
целым выражением. Например, пусть строка s = ‘abcde’. Тогда после выполнения процедуры Insert(’12’, s,3) строка s будет равна ‘ab12cde’

7. Процедура Val( <строка>, var <ариф. перем.>, var <код ошибки> )

Преобразует <строку> в числовое значение, которое помещается в переменную <ариф. перем.>. Параметр <ариф. перем.> должен быть целой или вещественной переменной (в зависимости от того, какого типа число содержится в <строке>). Конечно же, <строка> должна содержать правильную запись числа. Если при преобразовании возникла ошибка, позиция символа, на котором ‘споткнулись’, заносится в <код ошибки>.

Если <код ошибки> равен 0, преобразование прошло успешно. Параметр <код ошибки> должен быть целой переменной. Например, пусть i и c целые переменные. Тогда после вызова Val(‘123’, i, c) переменная i = 123, а с = 0. После вызова Val(‘1a2’, i, c) значение переменной i не определено, а c = 2 (вторым символом встретилась буква).

8. Процедура Str( <ариф. выраж.>, var <строка> )

Преобразует числовое значение <ариф. выраж.> в строковое и помещает его в <строку>. Старое значение строки теряется. Параметр <строка> должен быть строковой переменной, а параметр <ариф. выраж.> — выражением целого либо вещественного типа. В <ариф. выраж.> можно задать формат преобразования (как в операторе вывода). Примеры преобразования (s — строка):
Str(4.14, s) s = ‘4.14’
i = 5 Str(i+12, s) s = ’17’
f = 3.1415926 Str(f:5:2, s) s = ‘3.14’

Таковы стандартные функции работы со строковыми переменными. Однако практически все эти действия можно произвести без применения стандартных функций и процедур.

Пример решения задачи со строками.

Разберем задачу на применение строк.
Ввести строку и заменить в ней все пробелы на троеточия.

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

Вариант A. С применением стандартных функций.

Как найти пробел? Для этого есть функция поиска подстроки pos (ничто не мешает считать пробел подстрокой, хотя и маленькой). Когда pos находит подстроку, она возвращает позицию ее начала — что нам и нужно. А если не находит — возвращает 0. Тогда мы должны закончить преобразование строки (пробелов не осталось!). Вырезать пробел можно с помощью процедуры delete, вставить — с помощью insert. Получаем следующий алгоритм:

1. Ввести строку.
2. Найти первый пробел в строке при помощи функции pos.
3. Пока результат pos не равен 0, выполнять шаги:
3.1. Удалить найденный пробел
3.2. Вставить на место пробела троеточие
3.3. Найти следующий пробел
4. Вывести получившуюся строку.

Вариант B. С использованием строки как символьного массива.

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

В отличие от первого варианта во втором потребуется две строки (дополнительная строка используется для конструирования результата). Алгоритм этого решения можно записать так:

1. Ввести исходную строку.
2. Записать в строку-результат пустую строку.
3. Для i от 1 до конца исходной строки выполнять:
если i-тый символ исходной строки — пробел то добавить к строке-результату троеточие, иначе добавить к строке-результату сам этот символ.
4. Вывести строку-результат.

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

program prim1; < вариант A >
uses crt;
var s: string;
k: byte; < это номер очередного символа-пробела >
begin
clrscr;
textcolor(lightgreen);
writeln(‘Замена в строке пробелов на . ‘);
write(‘Введите строку: ‘);
readln(s);
k := pos(‘ ‘, s);
while k <> 0 do
begin
delete(s, k,1);
insert(‘. ‘, s, k);
k := pos(‘ ‘, s);
end;
writeln(‘Результат: ‘, s);
readkey;
end.
program prim_6a1b; < вариант B >
uses crt;
var s, res: string;
i: byte; < это номер очередного символа >
begin
clrscr;
textcolor(lightgreen);
writeln(‘Замена в строке пробелов на . ‘);
write(‘Введите строку: ‘);
readln(s);
res := »;
for i := 1 to length(s) do
if s[i] = ‘ ‘ then res := res + ‘. ‘
else res := res + s[i];
writeln(‘Результат: ‘, res);
readkey;
end.

Какой символ ставится в конце каждой строки в паскале

Регистрация на форуме тут, о проблемах пишите сюда — alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите восстановить пароль

Поиск по форуму
Расширенный поиск
К странице.

Здравствуйте, уважаемые форумчане!

нужно вставить chr(10) (конец строки) через каждые 150 символов в нетипизированный файл.
если встречается chr(13) (enter), то далее отсчет символов начинать заново.
причем слова в тексте не должны разрываться, т.е. вставку делать перед следующим пробелом
text.txt


Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке — https://slurm.club/3MeqNEk

Какой символ ставится в конце каждой строки в паскале

Строки в паскале . Тип String

Строки в паскале . Тип String

Итак, что такое строка? Фактически строка — это массив, состоящий из символов. В строку могут входить все ASCII-символы (эти символы показаны в конце статьи). То есть машина, улица-сезам, три головы,13 стульев, 12ррр443р43г. **:па,542″№;%:? а а 69866 — все это строки. Строки объявляются так

Как вы видите, длину строки можно как указать, так и оставить неуказанной. Однако тут следует запомнить,что максимальная длина строки — 255 символов и больше вы в одну строку ну никак не запихнете. То есть, когда вы не указываете размер строки — она принимает максимальный размер в 255 символов. Обратиться к символу в строке просто — необходимо только знать его порядковый номер. Порядковый номер начинается с 1 и заканчивается соответственно 255 (помним, что строка не может быть длиннее 255 символов). Например имеем строки

Этот пример показывает, что строка может состоять из любых символов кодировки ASCII. Обратите внимание! Пробел также считается символом.Например строка g состоит из одного символа — пробела. Также существует ситуация, когда в строке совсем нет символов. Тогда говорят,что строка содержит пустой символ. В нашем примере это строка d. Следует также добавить, что стандартный Turbo Pascal не поддерживает кириллицу (русские буквы) в отличие от PascalABC и Free Pascal, которые без проблем работают с ними.

Идем дальше. В паскале со строками можно производить различные действия, а именно производить слияние (или как еще говорят конкантенацию) и сравнивать . произвести слияние просто: нам просто потребуется прибавить одну строку к другой, однако следует обратить внимание, что к чему прибавлять. Смотрим пример

Теперь о сравнении строк. Тут дело обстоит немного сложнее. Cледует запомнить, что сравнение строки производится слева направо и обязательно посимвольно. Это значит, что в первую очередь надо сравнить первые элементы, затем вторые, третьи и т.д. Если при посимвольном сравнении сравнивается пустой символ и любой другой символ, то пустой символ всегда будет меньше. Теперь самое главное. Сравнивают не сами символы а коды этих символов: чей код больше, тот символ и будет «больше». Таблица символов представлена ниже.

Для наглядности сравним несколько строк. Имеем

Тогда при сравнении

В паскале также есть необходимые функции и процедуры для работы с типом string. Перед тем как мы к ним перейдем запомните, что переменные m,n принимают только целочисленные значения,а Str и podStr являются строковыми переменными. Начнем с функций:

Copy (Str, m, p) находит в строке Str подстроку ,начинающуюся с символа на месте m и, начиная от него, копирует p символов вправо.

Concat (str1, str2,…,strn) соединяет (выполняет слияние) строк str1, str2,…,strn в одну строку.

Length (Str) определяет длину строки Str. В качестве результате выводиться целое число.

Pos (podStr, Str)

определяет есть ли в строке Str подстрока podStr. Если есть — то в результат будет записано целое число, которое указывает на номер символа в строке Str, с которого начинается подстрока podStr. Если же подстрока не входит в строку, то в результате будет выведено число 0.

Переходим к процедурам:

— процедура удаления подстроки из строки (подстрокой может быть и один символ). Опишем процесс удаления: в начале в строке Str находится символ с индексом m (стоящий на m месте), затем от этого символа отсчитываются p символов вправо и конце концов удаляется получившаяся подстрока.

Insert (podStr, Str, m) — процедура необходима для вставки подстроки podStr в строку Str. Подстрока вставляется в строку с позиции m.

Итак у нас остались две последние процедуры, с помощью которых можно преобразовывать типы в паскале. Наверное, некоторым не понятно зачем вообще преобразовывать типы? Приведу наглядный пример: допустим мы вводим строку d=’75409привет’ и нам необходимо сложить все числа в этой строке и для сложения использовать переменную sum. Теперь встает проблема. Мы не может суммировать числовые переменные, записанные в строку, потому что компилятор воспринимает их не как числа, а как символы. Для подсчета суммы переменная sum должна быть числовой, например иметь тип integer. Однако запись вида

у вас работать не будет потому, что переменные d[1],d[2],d[3],d[4],d[5] должны быть тоже числового типа (integer,real,byte). Вообще запомните,что лучше всего, когда переменные sum,d[1],d[2],d[3],d[4],d[5] одного типа. Делаем вывод: если мы работаем со строковой переменной, содержащей числа и нам необходимо произвести с этими числами какие-либо действия (сложение, вычитание, умножение, деления, нахождение среднего и т.д.), то нам сначала необходимо преобразовать тип этих чисел из строкового в числовой. Ну, а если кратко то string в, например, integer.

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

А теперь перейдем собственно к процедурам преобразования типов.

— используя эту процедуру можно преобразовать строковую переменную в числовую. Преобразуется строка Str и результат записывается в переменную k. А переменная pr необходима для проверки преобразования на ошибки. Если во время преобразования произошла ошибка, то в переменную pr записывается целое число, которая указывает на номер символа в строке Str, с которого началась ошибка в преобразовании. Если ошибок нет, то pr = 0.

— процедура обратная процедуре Val. То есть с ее помощью числовая переменная преобразуется в строковую. В данном случае числовая переменная k преобразуется в строку Str.

И напоследок я хотел бы обратить ваше внимание на интересную особенность. В начале статьи я сказал, что длина строки может быть в диапазоне от 1 и до 255 символов. На самом деле размерность строки 0.255, однако элемент stroka[0] не предназначен для записи символов. В него записывается длина строки причем записывается она в виде знака ‘#’ (решетка) и цифр. Для того ,чтобы узнать длину строки достаточно использовать команду

А чтобы изменить длину строки нужно использовать присвоение. Изменим длину строки stroka

В этом примере мы изменили длину строки и теперь она равна 10. Внимание работа с нулевым элементом (stroka[0]) возможна не в каждом компиляторе. В Turbo Pascal это сделать можно, а вот в PascalABC нельзя!

5 Replies to “Строки в паскале . Тип String”

А можно статью про то, как написать функцию замены строки (каждого вхождения)? И как наиболее эффективно это можно сделать?

Как же на паскале программируют с длиной строки в 255 символо.

вопрос,
Ну а что здесь такого? строка имеет ограничение в 225 символов ,но ведь можно использовать массив строк
да и не забывайте,что речь идет о turbo pascal, в pascalABC ,например, ограничение на длину строк нет

Правописание «тся»,»ться» в школе, наверно, не проходили…

Мелкие орфографические ошибки совсем не мешают тем, кто пришел сюда действительно узнать что-то новое, а не ерундой помаяться.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *