Как сделать пустую строку в паскале

Обновлено: 06.07.2024

По своей сути строки в паскале представляют собой одномерные массивы символов.

Максимальная длина строки составляет 255 символов. Если вам необходимы для работы более короткие строки, то их длину в квадратных скобках указывают при описании переменной типа string . Если длина не указана, то по умолчанию ее длина будет максимально возможной, т.е. 255 символов.

Var s : string; s1 : string [10]; c : char;

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

S :=’Привет, мир!’;

У каждого символа в строке, как у элемента одномерного массива, есть индекс. Со строкой и ее символами можно работать, как с одномерным массивом.

Write ( s );

Выведет на экран : Привет, мэр!

Для соединения нескольких строк в одну используется “ + ” либо Concat (s1, s2. sn)

Например, последовательность команд

s3:=' мир ! ';

write (s1+s2+s3);

write (concat(s1,s2,s3));

Выведет на экран: Привет, мир ! Привет, мир !

Чтобы выделить подстроку из строки используется функция Copy (S, poz, n) , где S – строка, из которой, начиная с позиции poz , копируем подстроку, состоящую из n символов.

s1:='Привет, мир!';

write (copy(s1,9,3)); // выделить подстроку, начиная с 9 позиции, длиной 3 символа

Выведет на экран: мир

Для поиска в строке подстроки используется функция Pos (subS, S) , которая определяет с какой позиции подстрока subS входит в строку S (возвращает целое число, равное индексу в строке первого символа искомой подстроки). Если искомой подстроки не обнаружено, то функция вернет 0.

s :='Привет, мир!';

write ( pos ('мир',s )); // найти с какой позиции в строке находятся символы 'мир'

Выведет на экран: 9

write (pos(' мэр',s));

Выведет на экран: 0

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

write (Length(s));

Выведет на экран: 12

write (Length(s));

Выведет на экран: 0

Для удаления из строки символов используется процедура Delete (s ,poz ,n ) , которая из строки s , начиная с позиции poz , удаляет n символов. При этом длина строки уменьшается на n .

s:=' Привет, мир !';

writeln (length(s));

Delete (s,5,2); // удалить из строки 2 символа, начиная с 5

writeln (s,' ',length(s));

Выведет на экран:

Для добавления в строку символов/подстроки используется процедура Insert (s ubs ,s ,poz ).

Подстроку subs вставить в строку s с позиции poz . Соответственно длина строки увеличивается на n.

s:=' Привет, мир !';

writeln (length(s));

Insert ('мой ',s,9);

writeln (s,' ',length(s));

Выведет на экран:

Привет, мой мир! 16

Строки можно сравнивать между собой, используя математические символы: =,<>,>, =. Сравнение строк производится слева направо посимвольно до первого несовпадающего символа, большей считается та строка, в которой первый несовпадающий символ имеет больший код в таблице кодировки ASCII. Если строки имеют различную длину, но в общей части символы совпадают, считается, что короткая строка меньше. Строки равны, если они имеют равную длину и соответствующие символы совпадают.

В результате сравнений получаем логическое значение false или true.

Например, возьмем две строки одинаковой длины, но разного содержания и их сравним:

writeln (s=s1);

False // не совпадает последняя буква

Теперь возьмем строки разной длины:

writeln (s=s1);

writeln (s>s1);

False // несмотря на совпадение первых 4 букв, длина строки больше

Для образца посмотрите небольшую программу, по обработке строки разными способами:

Строку в Паскале можно рассматривать как массив символов переменной длины. Работа со строками в Паскале довольно проста.

Простой пример: объявляем строку stroka, допустимая длина этой строки равна 10-ти символам

Строки в Паскале

Получаем:

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

Длину строки в Паскале получаем с помощью функции Length:

Длина строки в Паскале

Получаем:

Если строке присвоить значение, длина которого больше допустимой, то лишние символы будут удалены. Пример:

Длина строки в Паскале

Получаем:

В этом примере строка может содержать не более двух символов, отсюда и результат.

Присоединить одну строку к другой в Паскале

Получаем:

Пример соединения строк в Паскале с помощью встроенной функции Concat:

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


Пришло время разобраться с символами и строками.

Символьный тип данных: сhar

Все символы закодированы в таблице символов и именно с ее помощью и распознаются значения нажатых клавиш. Каждый символ занимает 1 байт памяти.

Для работы с символами нам достаточно двух функций: СHR и ORD.

CHR- определяет символ по коду. Пример: write(chr(65)); выведет букву А.

ORD-определяет код по символу. write(ord('A')); выведет 65 (номер буквы А в таблице)

v ar
c:char;
i:integer;
begin
writeln('введите число');
read(i);
writeln(chr(i));
writeln('введите букву');
read(c);
writeln(ord(c));
end.

Строка — это последовательность символов. Количество символов в строке называется ее длиной. Длина строки может находиться в диапазоне от 0 до 255.

Описываем строку с явным или неявным заданием ее длины, вводим и выводим как обычно. Для работы со строками будем использовать 4 функции и 4 процедуры.

vedro-compota

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

Типы литералов

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

  1. Строковые литералы
  2. Символьные литералы
  3. Числовые литералы

Строковые литералы

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

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

Символьные литералы

То же самое, что и строки, только состоят из одного символа, заключенного в одинарные кавычки.
Цифра взятая в кавычки с двух сторон также трактуется как символ.
Примеры символьных литералов (с помощью комментариев к коду, добавим справа пояснения):

Последним в списке примеров символьных литералов приведён пробел, это просто символ пробела окружённый одинарными кавычками

Числовые литералы

Числовые литералы можно разделить на:

    Целочисленные -- это любые целые числа -- положительные, например:

или отрицательными, например:

Далее рассмотрим использование литералов для вывода данных.

Вывод данных на экран с помощью write() и writeln()

В этом разделе мы с вами начнём писать первые работающие строки программного кода на языке Паскаль.

Первая программа -- Привет Мир!

Следуя уже довольно старой и всё такой же доброй традиции, выполним нашу первую программу, поприветствовав мир:

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

Если окно в котором оно выводится слишком быстро закрывается, используйте приём для удержания консоли (просто запомните его, позже мы объясним как это работает):

Если строка выводится в виде абракадабры, то просто перепишите строковый литерал английскими буквами, как это указано в комментарии к строке вывода приветствия (просто передаём звуки русского языка латинскими символами, переводить фразу на английский не требуется).

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

Обязательно запускайте на своём компьютере все примеры, которые будут встречаться далее.

write() и writeln() -- стандартные процедуры вывода данных


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

Write() и Writeln() -- две стандартные (то есть разработанные создателями языка) процедуры в Паскаль, которые позволяют выводить на экран переданную в них информацию, или говорят "переданные им аргументы".

Аргументы -- это значения, которые передаются в процедуру, будучи перечисленными в коде программы внутри скобок после имени процедуры, например:

Даст нам в консоли текст:

Обратите внимание, что после вызова любой процедуры обычно ставится точка с запятой.

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

Вызов процедуры с указанным именем

Чтобы вызвать какую-то процедуру необходимо знать:

  1. её имя
  2. число её аргументов и их тип

Например ,пусть у нас есть выдуманная процедура с именем, скажем, $test()$ и мы знаем, что она принимает на вход два аргумента: один целочисленный аргумент и один литерал, тогда вызвать её можно с помощью такой строки в теле программы:

Или даже передав в качестве первого аргумента переменную нужного типа:

write() & writeln()

Теперь перейдём непосредственно к обсуждению write() и writeln().
Общее:

    И write() и writeln() служат для вывода в консоль информации.
    Например, ввод чисел:

Или строк (строковый литералов):

Отличие:

  • write() просто выводит на экран переданные ему аргументы.
  • writeln() же выводит переданные аргументы и переводит курсор на новую строку. То есть любой следующий вызов процедуры вывода данных начнёт свой вывод уже со следующей строки.

Таким образом сравним работу фрагментов кода:

В чем разница между результатами, если запустить их? Обратите внимание в каком случае произошёл перенос строки, а в каком нет.

Пустой writeln() и пустой write() для перевода строки

Следует отметить, что по данному выше описанию работы writeln() и write() можно сказать, что вызванный без аргументов write():

не делает вообще ничего, а вот пустой writeln() позволяет перенести курсор на новую строку:

(заметьте, что в последнем примере кода использовались и однострочные и многострочные комментарии)

Вывод литералов разного типа:

Примеры вывода одного и того же разными способами

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

Вывод одной строки -- разными способами

Пусть у нас есть задача вывести в консоль такой текст:

Итак, рассмотрим разные способы:

    Проще всего напечатать этот текст в виде строкового литерала:

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

ПРИМЕЧАНИЕ: Надо понимать, что множественные вызовы write() и передача всё тех же аргументов через запятую -- это одно и то же, а вот множественный вызов writeln() и передача аргументов в один writeln() через запятую -- не одно и то же, так как после каждого вызова writeln происходит перенос курсора на новую строку.

Вывод многострочного текста

Если требуется вывести многострочный текст, то одним или несколькими write() не обойтись, ведь нужно будет как-то переносить курсор на новую строку, а write этого делать не умеет, поэтому нам придётся использовать в том числе и writeln().

Пусть нам требуется вывести в косоль такого аски-арт робота:

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

  1. В отличии от предыдущих примеров тут уже не обойтись передачей всего текста в один строковый литерал, так как этот робот многострочный, поэтому чтобы вывести его построчно будем использовать серию writeln():
  2. После вывода последней строки перенос курсора не обязателен, и потому можно использовать write():
  3. Если вы почему-то хотите вывести какую-то очередную стоку с помощью write() и после неё идёт текст, который должен начинаться с новой строки, то не забывайте дополнительно вызвать пустой writeln(), например:

Видео-пояснение

К этому уроку есть видео-пояснения:

Задачи для самостоятельного решения

    Ответьте на вопросы (письменно):
  1. Литералы какого типа вы знаете? Чем они отличаются друг от друга при записи
  2. Что такое процедура? Что такое аргументы процедуры?
  3. Пусть у вас есть абстрактная процедура с именем $abc()$, запишите её вызов в теле программы, передав литералы соответствующего типа (для каждого варианта), если она принимает на вход :
    • четыре аргумента - первые два целочисленные, и третий символьный и четвертый строковый.
    • два разных аргумента символьного типа
    • пять аргуементов - первые два строковое, один числовой и два символьных
    • три аргумента: два строковых и один числовой
  4. Чем отличается write от writeln()?
  5. Если ли разница между передачей многих аргументов во write(), например:

и вызовом этой процедуры несколько раз с каждым из этих аргументов, например:

? Будет ли разница между выведенными на экран текстами, если в них write() заменить на writeln()?
(если не можете ответить сходу -- запустите по очереди оба примера ,сравните результат и снова почитайте объяснения выше)

ПРИМЕЧАНИЕ: когда будете решать следующие ниже задачи, можете привести все решения в теле одной программы, просто закомментировав то. что уже работает, ваш код будет выглядеть как-то так:

Когда же будете показывать работу программы расскомментируйте те строки, работу которых хотите продемонстрировать. Например показываем работу первой строчки тела программы (в предыдущем же примере мы показывали работу второй строки):

Далее решите задачи запуская код программы, в теле которого:

Выведите на экран эту строку (напишите в одной программе решения всех пунктов, просто закрывая комментариями, тот код, что уже работает):

  1. С помощью 1 аргумента -- литерала строкового типа
  2. С помощью 2-х аргументов-литералов любого типа одним вызовом write().
  3. С помощью вывода всей строки, кроме последнего символа, потом уже этот последний символ.
  4. Так, чтобы одна цифра была числовым литералом, вторая символом, а всё остальное чем угодно.

ПРИМЕЧАНИЕ: После выполнения всех четырёх пунктов на экране (в консоли) вы должны получить (4 строки):

с помощью отдельных символов (симольных литералов), а всё остальное как угодно.

Подсказка: попробуйте решить самостоятельно, если не все понятно можно посмотреть разбор решения

Читайте также: