Сложение строк паскаль
#8 Строковый тип данных String в Паскаль. Начало работы со строками
Primary tabs
Forums:
Строковый тип данных позволяет использовать в программе последовательности из многих символов, которые также называют «строками».
Строковые литералы
Мы уже говорили о строковых литералах ранее.
Строковые литералы — это последовательности символов взятые в кавычки, но в отличии от символьных литералов, в строковых может быть много символов (а в символьных только один).
Пример оформления строкового литерала:
Строковые переменные
Строковые переменные объявляются следующих образом:
Как и переменным других типов строковым переменным можно присваивать значения — строковые литералы, другие строковые переменные или значения, возвращающие строковый тип.
Приведём пример присваивания литерала переменной и одной переменной другой переменной:
Операции со строками
Конкатенация — сложение строк
Пожалуй, самой распространённой операцией в Паскале является конкатенация строк. Эта операция состоит в том, что из двух «суммируемых» строк получается одна.
Рассмотрим пример:
— запустите этот код. В консоли в качестве значения переменной $c$ мы получим строку:
Таким образом: для конкатенации строк мы используем оператор суммы $+$.
является строковым выражением, так как его результат обладает типом strign.
Сравнение строк
Как и переменные всех простых типов (есть ещё т.н. сложные типы, о которых мы будем говорить в следующих уроках) строки можно сравнивать, для чего используются, в частности операторы $lt>$ и $=$.
Далее рассмотрим примеры небольших программ, работающих со строками, в т.ч. их сравнивающие.
Разбор примеров
Пример №1 — считывание строк
Пользователь вводит произвольную строку. Cчитайте её, сложите саму с собой и выведите на экран.
Пример №2 — считывание строки и её сложение с литералом
Пользователь вводит произвольную строку. Cчитайте её, сложите саму со строкой ‘123’ и выведите на экран.
— в данном решении мы не записывали значение литерала в переменную, хотя могли бы, например:
Также мы могли бы объявить отдельную переменную для хранения результата, записать в неё результат конкатенации и затем вывести её значение:
Пример №3 — считывание двух строк и их сложение с записью в переменную
Получите от пользователя две произвольных строки, сложите их, запишите результат конкатенации в переменную и выведите результат на экран.
Пример №4
Получите от пользователя три строковых значения, выведете на экран результат проверки условия:
«»первое значение равно второму или первое НЕ равно третьему»»
Используя логическую операцию OR, и оператор сравнения $=$, можем решить так:
Видео-пояснения
Для этого урока есть следующие видео:
Самостоятельная работа
Вопросы
- Что такое оператор?
- Что такое конкатенация строк? Какой оператор используется для конкатенации?
Задачи
«»первая строка + произвольный литерал + вторая строка + третья строка»»
Результат конкатенации выведите на экран.
Получите от пользователя четыре строковых значения, выведете на экран результат проверки условия:
«»первое значение равно третьему и первое НЕ равно четвертому или четвертое равно третьему»».
При решении различных классов задач возникает необходимость обработки текстовых данных. Инструментом, позволяющим выполнить необходимые действия, являются строки.
Строковой тип описывается ключевым словом string и состоит из последовательно расположенного набора элементов символьного типа char . Строки в PascalABC.NET, в отличии от других компиляторов языка Паскаль, могут иметь произвольную длину.
Строковой тип можно задать двумя способами: непосредственно в разделе описания переменных или через определенный строковой тип, например:
- type
- str = string[100];
- var
- s: string;
- s1: string[10];
- s2: str;
Строку можно инициализировать, как и переменные других типов, в разделе описания переменных, например:
s4: string := ‘New string’;
Операции над строками в Паскаль
Над строками определены операции присваивания, конкатенации и операции отношения.
Сравнение строк происходит лексикографически слева направо до первого несовпадающего символа:
- строки равны, если они посимвольно эквивалентны и имеют одинаковую длину: ‘abc’ =’abc’ ;
- первая строка больше второй строки, если:
- ее первый несовпадающий символ имеет больший код: ‘abd’ > ‘abc’ ;
- они посимвольно эквивалентны и первая строка длиннее второй ‘abc’ > ‘ab’ .
Операция конкатенация выполняет слияние нескольких строк в одну, например:
‘Pascal’ + ‘ABC’ + ‘.NET’ = ‘PascalABC.NET’;
Внимание: операции отношения имеют более низкий приоритет в сравнении с операцией конкатенации (т. е. в строковом выражении ‘ab’ + ‘d’ > ‘abc’ сначала произойдет слияние строк в левой части и только потом выполнится операция сравнение).
В PascalABC.NET для строк можно использовать расширенный оператор присваивания += , например:
- var s: string := ‘PascalABC.’;
- s += ‘NET’;
сложение с числом (при этом число предварительно преобразуется в строковое представление), например:
- s1 := ‘Масса = ‘ + 100 + ‘ кг’;
- s2 := ‘Pi = ‘ + 3.14;
операцию * — образование из строки новой строки повторенной n раз:
s * n или n * s
- s1 := ‘a’ * 10;
- s2 := 10 * ‘abc’;
Для обращения к отдельным символам строки, также, как и в массивах, можно использовать индекс: запись s[i] дает доступ к i -тому символу в строке, нумерация начинается с единицы.
- var s: string := ‘PascalABC.NET’;
- for i := 1 to Length(s) do
- if i mod 2 = 0 then s[i] := ‘0’;
- writeln(s);
Если индекс i выходит за пределы длины строки, то генерируется исключение, при этом программного прерывания не происходит.
Для обработки строк в языке программирования Паскаль используется набор стандартных процедур и функций (в примере выше применяется стандартная функция Length(s) , возвращающая длину строки).
Copyright © 2014-2018, Урок информатики
Все права защищены
Процедуры STR и VAL.
В строковую переменную можно записывать не только буквы, но и цифры. Однако это будут не числа, как таковые, а их символьное представление. Для преобразования символьных представлений числа в само число, и наоборот, используются процедуры STR и VAl.
Например, возьмем 2 числа: 125 и 347. Если эти числа записаны в строковых переменных, то с ними можно производить те действия, которые производятся над строками. Например, в результате операции сцепления 125+347 получится 125347. Если же данные числа будут записаны в переменных типа Integer или Real, то над ними можно производить операции, предусмотренные для чисел (сложение, вычитание умножение, деление, DIV, MOD и т.д.). Например, в результате операции сложения 125+347 получится 472.
В языке программирования Pascal предусмотрена возможность преобразования чисел в их символьное представление и наоборот.
Процедура STR преобразует число целого или вещественного типов в его строковое представление. Процедура имеет 2 параметра: STR (X, ST), где «X» — это число, а ST – его строковое представление. Также, можно указывать формат преобразования: STR(X:A:B, ST), где «A» задает ширину всего поля, которое выделяется для строкового представления числа, а «B» — количество символов в дробной части (последний параметр имеет значение в том случае, если преобразуется вещественное число). Процедура STR делает с числом то же, что и оператор Writeln перед тем как вывести число на экран (преобразует число в символ).
Процедура VAL преобразует строковое представление числа в само число, которое можно записать в целочисленную или вещественную переменную. Процедура имеет 3 параметра: VAL (ST, X, CODE), где ST – строка, которую необходимо преобразовать в число, X – вещественная или символьная переменная, в которую записывается это число, CODE – необязательный параметр, который, в случае ошибки будет содержать номер позиции, в которой обнаружен ошибочный символ.
Использование процедуры STR.
Строка №3. Создаем 3 строковые переменные.
Строка №4. Создаем 3 целочисленные переменные.
Строка №7. В 1-ую переменную типа Integer записываем число 1234.
Строка №8. Во 2-ую переменную типа Integer записываем число 5678.
Строка №9. Складываем эти числа, результат записываем в 3-ю переменную.
Строка №10. Выводим результат на экран.
Строка№11. Переводим 1-ое число в его строковое представление, результат сохраняем в переменной «stroka1».
Строка №12. Переводим 2-ое число в его строковое представление результат сохраняем в переменной «stroka2».
Строка №13. Производим над строками операцию сцепления и записываем результат в переменную «stroka».
Строка №14. Выводим результат на экран.
О процедуре STR также можно прочитать в разделе, посвященному графике в Pascal.
Использование процедуры VAL.
Напишем программу, в которой строковой переменной будет присвоено значение, определяющее дату, например, 23.02.1965. Пусть эта дата обозначает год вашего рождения. Программа, должна подсчитать, сколько вам лет на текущий момент. Текущим моментом будем считать 2012 год.
Строка №7. В переменную «stroka1» записываем дату рождения.
Строка №8. В переменную «stroka2» копируем из переменной «stroka1» последние 4 символа, 1965.
Строка №9. Преобразовываем эти 4 символа в число и записываем это число в целочисленную переменную «rog».
Строка №10. В целочисленную переменную «let» записываем значение, которое получится при вычитании из числа 2012 числа 1965.
Строка №11. Выводим значение переменной «let» на экран.
Сложение строк паскаль
Для обработки строковой информации в Турбо Паскаль введен строковый тип данных. Строкой в Паскале называется последовательность из определенного количества символов. Количество символов последовательности называется длиной строки. Синтаксис:
n — максимально возможная длина строки — целое число в диапазоне 1..255. Если этот параметр опущен, то по умолчанию он принимается равным 255.
Строковые константы записываются как последовательности символов, ограниченные апострофами. Допускается формирование строк с использованием записи символов по десятичному коду (в виде комбинации # и кода символа) и управляющих символов (комбинации ^ и некоторых заглавных латинских букв).
Пустой символ обозначается двумя подряд стоящими апострофами. Если апостроф входит в строку как литера, то при записи он удваивается.
Переменные, описанные как строковые с разными максимальными длинами, можно присваивать друг другу, хотя при попытке присвоить короткой переменной длинную лишние символы будут отброшены.
Выражения типа char можно присваивать любым строковым переменным.
В Турбо Паскаль имеется простой доступ к отдельным символам строковой переменной: i-й символ переменной st записывается как st[i]. Например, если st — это ‘Строка’, то st[1] — это ‘С’, st[2] — это ‘т’, st[3] — ‘р’ и так далее.
Над строковыми данными определена операция слияния (конкантенации), обозначаемая знаком +. Например:
В этом примере переменная c приобретет значение ‘TurboPascal’.
Кроме слияния над строками определены операции сравнения ,=,<>, =. Две строки сравниваются посимвольно, слева направо, по кодам символов. Если одна строка меньше другой по длине, недостающие символы короткой строки заменяются символом с кодом 0.
Процедуры и функции для работы со строками
В системе Turbo Pascal имеется несколько полезных стандартных процедур и функций, ориентированных на работу со строками. Ниже приводится список этих процедур и функций с краткими пояснениями. Функция возвращает в качестве результата значение текущей длины строки-параметра
Пример.
Функция выполняет слияние строк-параметров, которых может быть произвольное количество. Каждый параметр является выражением строкового типа. Если длина строки-результата превышает 255 символов, то она усекается до 255 символов. Данная функция эквивалентна операции конкатенации «+» и работает немного менее эффективно, чем эта операция.
Функция возвращает подстроку, выделенную из исходной строки s, длиной count символов, начиная с символа под номером index.
Процедура удаляет из строки-параметра s подстроку длиной count символов, начиная с символа под номером index.
Пример.
Процедура предназначена для вставки строки source в строку s, начиная с символа index этой строки.
Пример.
Функция производит поиск в строке s подстроки substr. Результатом функции является номер первой позиции подстроки в исходной строке. Если подстрока не найдена, то функция возвращает 0.
Процедура преобразует численное выражение X в его строковое представление и помещает результат в st.
Процедура преобразует строковую запись числа, содержащуюся в st, в числовое представление, помещая результат в x. x — может быть как целой, так и действительной переменной. Если в st встречается недопустимый (с точки зрения правил записи чисел) символ, то преобразование не происходит, а в code записывается позиция первого недопустимого символа. Выполнение программы при этом не прерывается, диагностика не выдается. Если после выполнения процедуры code равно 0, то это свидетельствует об успешно произошедшем преобразовании.
В дополнение приведем некоторые функции, связанные с типом char, но которые тем не менее часто используются при работе со строками.
Функция возвращает символ по коду, равному значению выражения n. Если n можно представить как числовую константу, то можно также пользоваться записью #n.
В данном случае функция возвращает код символа ch.
Если c — строчная латинская буква, то функция возвращает соответствующую прописную латинскую букву, в противном случае символ c возвращается без изменения.
Волгоградский государственный педагогический университет
Кафедра алгебры, геометрии и информатики
лабы по информатике, егэ
лабораторные работы и задачи по программированию и информатике, егэ по информатике
Pascal: Занятие № 11. Строковый тип данных в Паскаль
Символьный тип char в Паскале
Символьной переменной соответствует тип char:
Инициализация символьной переменной:
Основные функции для работы с символами
Функция преобразует целое число, имеющее тип BYTE, в один символ ASCII-кода:
Функция возвращает порядковый номер символа параметра в таблице ASCII:
var i: integer; begin for i:=32 to 255 do write(chr(i):3); end.
Строковые переменные в Паскаль
Строковые переменные в Паскале имеют тип String
Объявление и инициализация строковой переменной:
var a:string; begin a:=’Привет всем!’; writeln(a); end.
Ввод значения строковой переменной с клавиатуры:
var a:string; begin writeln(‘Введите слово’); readln(a); writeln(‘Вы ввели слово ‘,a); end.
Строка «рассматривается» компилятором, как массив букв:
Функции работы со строками в Pascal
var s:string[30]; n,i:integer; begin writeln(‘введите текст’); readln(s); n:=0; for i:=1 to length(s) do if s[i]=’f’ then n:=n+1; write(‘в тексте букв f = ‘,n) end.
const m = [‘1’..’9′]; var s: string; i, k: byte; begin read(s); k := 0; for i := 1 to length(s) do if s[i] in m then inc(k); writeln(‘цифр = ‘, k); readln; end.
var a,b,c:string; i:longint; begin write(‘введите слово:’); readln(a); b:=»; for i:=1 to length(a) do b:=a[i]+b; if a=b then write(‘перевертыш’) else write(‘не перевертыш’); end.
String 6. Определить, встречается ли в тексте сочетание букв «ку».
String 7. Заменить данную букву в слове другой буквой (буквы вводит пользователь).
Примечание:
Использовать функции: Pos, Copy, Delete
Посимвольный ввод до пробела
Посимвольный ввод удобен для «мгновенной» обработки символов в строке.
Для организации массива символьных строк:
- Все данные разделяются одним пробелом. Нужно подсчитать, сколько студентов получили отметку 5.
- Вывести фамилии студентов, у которых оценка 2.
- Вывести фамилии студентов, родившихся в 1996 году.
Пример:
Входной текст: Алгоритм — это правила выполнения определенных действий!, предписание исполнителю! совершить последовательность действий!, набор команд для компьютера!
Выходной текст: Алгоритм — это правила выполнения определенных действий, предписание исполнителю! совершить последовательность действий, набор команд для компьютера!
Трудность низкая:
Программа должна формировать в памяти вторую строковую переменную с измененным текстом, а потом выводить ее на экран.
Трудность высокая:
Программа должна преобразовывать исходную строку без использования дополнительных переменных, и затем выводить ее на экран.
И напоследок рассмотрим олимпиадное задание по Паскалю:
* Решить ту же задачу, в которой сдвиг будет не на 3 позиции, а на k, причем отрицательное значение является признаком сдвига влево, положительное — вправо.
var a:char; i,n:byte; s,s1:string; begin s1:=»; readln(s); for i:=1 to length(s) do begin n:=ord(. ); n:=n+3; if n=123 then n:=97; <в ASCII 120 - x, 97 - a>if . ; <в ASCII 121 - y, 98 - b>if . ; <в ASCII 122 - z, 99 - c>a:=chr(. ); s1:=. ; end; writeln(s1) end.
Потренируйтесь в решении задач по теме, щелкнув по пиктограмме: