ИМЯ величины состоит из одной или нескольких латинских букв, цифр, других знаков. Заглавные и строчные буквы в именах величин считаются одинаковыми, вначале всегда пишется буква.
Например: А, DR, t45, q1$, massa1.
ЗНАЧЕНИЕ величины может быть представлено числом, каким-либо текстом или арифметическим выражением.
Знаки арифметического действия в значениях величин заменяются:
возведение в степен ь
значения таких величин не меняются в процессе исполнения алгоритма
значения таких величин могут изменяться при выполнении алгоритма
Тип string (строка) не входит в стандартный язык Паскаль, но он прочно вошел во все известные компиляторы с этого языка.
Количество символов в строке называется ее длиной. Длина строки может лежать в диапазоне от 0 до 255.
При описании строковой переменной в квадратных скобках может быть указан ее максимальный размер, не превосходящий 255. Если такой размер опущен, то считается, что длина строки может достигать 255 символов.
Все переменные строковых типов совместимы между собой при выполнении различных операций (+) над строками.
В переменных строкового типа удобно хранить последовательности символов, обозначающие имена собственные, например, фамилии людей или географические названия. Именно для подобных данных над строками были введены операции сравнения. (Сравнение строк производится слева направо до первого несовпадающего символа. Та строка считается больше, в которой первый несовпадающий символ имеет больший номер в таблице символьной кодировки). Кроме того, можно выделить несколько общих операций над строками, которые часто применяются при решении совершенно различных задач. Эти операции были оформлены в виде стандартных процедур и функций.
val(s,n,i) — переводит строку s в число (вещественное или целое, согласно типу переменной n), если строка s не является изображением числа соответствующего типа по правилам Паскаля, то значение переменной i будет отлично от нуля, при удачной конвертации значение i равно нулю;
str(i,s) — переводит число в его строковое представление;
delete(s,i,n) — удаляет из строки s n символов, начиная с символа с номером i;
insert(s1,s,i) — вставляет в строку s подстроку s1, перед символом с номером i
copy(s,i,n) — выделяет из строки s подстроку длиной n, начиная с символа i;
concat(s1,s2,…,sN) — выполняет сцепление (конкатенацию) строк s1,s2,…,sN в одну строку;
length(s) — определяет реальную длину строки; результат – значение целого типа;
pos(s1,s) — выдает целое число – номер позиции в строке s, с которой начинается подстрока s1; если подстрока не найдена, то выдает ноль
Строковые переменные в языке Pascal описываются следующим образом:
(string в переводе строка). Объявление строки максимальной (255) длины еще короче:
s:=’String переводится как строка’;
Для того, чтобы ввести строку s, достаточно написать readln(s); А чтобы вывести: writeln(s); И все. Т.е. вводятся и выводятся строки не поэлементно, как массивы, а целиком.
Pascal позволяет выполнять операции сравнения двух строк. Сравнение происходит посимвольно слева направо: сравниваются коды соответствующих символов до тех пор, пока не нарушится равенство или не кончится одна из строк (или обе сразу), при этом сразу делается вывод о знаке неравенства. Две строки называются равными, если они равны по длине и совпадают посимвольно.
Под склеиванием понимается последовательное объединение нескольких строк
, после выполнения оператора s:=’Иван’ + ‘ Васильевич’; в переменной s будет содержаться строка ‘Иван Васильевич’. Как, Вы уже поняли, операция сложения строк обозначается +.
Даны две строки. Объединить их в одну в порядке следования, разделив одним пробелом.
writeln (’введите первую строку’);
writeln (’введите вторую строку’);
writeln(’получили строку == ’,s);
Под длиной строки понимается фактическое (а не максимально возможное!) количество символов в строке. Это значение можно найти при помощи функции Length(str), результат которой – целое число, равное количеству символов
Подсчитать сколько раз в данной строке встречается символ ’a’.
writeln (’введите строку’);
writeln(’количество символов а равно’,k);
Определить сколько во введенной непустой строке символов ‘a’
Урок 55. Правила описания символьных величин и символьных строк. Основные функции и процедуры Паскаля для работы с символьной информацией
Символьный тип данных
Величина типа «символ» может принимать значения любых символов компьютерного алфавита. Символьная величина занимает 1 байт памяти, в котором хранится код этого символа, соответствующий используемой кодовой таблице. Заметим, что в Delphi наряду с однобайтовой кодировкой символов используется и двухбайтовая.
Символьной тип называется Char. Пример описания символьных переменных:
Var c1, с2: Char;
Символьный тип относится к порядковым типам данных. Из этого следует:
• символы — упорядоченное множество;
• у каждого символа в этом множестве есть свой порядковый номер;
• между символами работает соотношение «следующий — предыдущий ».
Функция Ord(x)
Ord(x) — функция от аргумента порядкового типа, которая возвращает порядковый номер значения х в этом типе данных. Если х — символьная величина, то результатом функции будет десятичный код х в кодовой таблице. Например:
Функция Chr (х)
Chr (х) — функция от целочисленного аргумента, результатом которой является символ с кодом, равным х. Например:
Поскольку коды символов лежат в диапазоне от 0 до 255, желательно тип х определять либо как byte, либо как интервальный тип 0..255.
Пример 1. Составить программу на Паскале, по которой на экран будет выводиться таблица кодировки в диапазоне кодов от 32 до 255. Напомним, что символы с кодами, меньшими 32, являются управляющими (не экранными).
Значения выводятся парами: символ — код. В одной строке располагается 10 таких пар. Вся таблица разместится в 24 строках на экране.
Принцип последовательного кодирования алфавитов
В любой кодовой таблице выполняется принцип последовательного кодирования латинского (английского) алфавита и алфавита десятичной системы счисления. Это важное обстоятельство, которое часто учитывается в программах обработки символьной информации.
При выполнении операций отношений, применительно к символьным величинам, учитываются коды этих величин. Чем больше значение кода, тем символ считается больше. Истинными являются следующие отношения: ‘А’ с ‘В’, ‘Z’ > ‘Y’, ‘а’ > ‘А’. Значение символьной переменной С является прописной (заглавной) латинской буквой, если истинно логическое выражение:
(С >= ‘А’) and (C = ’0′) and (С : String[ ]
Var Name: String[20]
Параметр длины может и не указываться в описании. В таком случае подразумевается, что он равен максимальной величине — 255. Например:
Var slovo: String
Строковая переменная занимает в памяти на 1 байт больше, чем указанная в описании длина. Дело в том, что один (нулевой) байт содержит значение текущей длины строки. Если строковой переменной не присвоено никакого значения, то ее текущая длина равна нулю. По мере заполнения строки символами ее текущая длина возрастает, но она не должна превышать максимальной по описанию величины.
Символы внутри строки индексируются (нумеруются), начиная с единицы. Каждый отдельный символ идентифицируется именем строки с индексом, заключенным в квадратные скобки. Например:
Name[5], Name[i], slovo[k+1].
Значение индекса может быть задано положительной константой, переменной, выражением целочисленного типа. Оно не должно выходить за границы описания.
Тип String и стандартный тип Char совместимы: строки и символы могут употребляться в одних и тех же выражениях.
Строковые выражения строятся из строковых констант, переменных, функций и знаков операций. Над строковыми данными допустимы операция сцепления и операции отношения.
Операция сцепления (+) применяется для соединения нескольких строк в одну результирующую строку. Сцеплять можно как строковые константы, так и переменные.
В результате получится строка:
Длина результирующей строки не должна превышать 255.
Если строки имеют различную длину, но в общей части символы совпадают, считается, что более короткая строка меньше, чем более длинная. Строки равны, если они полностью совпадают по длине и содержат одни и те же символы.
Функции и процедуры
Функция Copy(S, Poz, N) выделяет из строки S подстроку длиной N символов, начиная с позиции Poz. N и Роz — целочисленные выражения.
Функция Length (S) определяет текущую длину строки S. Результат — значение целочисленного типа.
Функция Pos (SI, S2) обнаруживает первое появление в строке S2 подстроки S1. Результат — целое число, равное номеру позиции, где находится первый символ подстроки S1. Если в S2 не обнаружена подстрока S1, то результат равен 0.
Процедура Delete (S, Poz, N) удаляет N символов из строки S, начиная с позиции Poz.
В результате выполнения процедуры уменьшается текущая длина строки в переменной S.
Процедура Insert (SI, S2, Poz) выполняет вставку строки S1 в строку S2, начиная с позиции Poz.
Примеры программ обработки строк
Пример 1. Составить программу, формирующую символьную строку, состоящую из N звездочек (N — целое число, 1 ≤ N ≤ 255).
здесь строковой переменной А вначале присваивается значение пустой строки, обозначаемой двумя апострофами (‘ ‘). Затем к ней присоединяются звездочки.
Вопросы и задания
1. Как в программе обозначается строковая константа, как определяется строковая переменная?
2. Какой может быть максимальная длина строки?
3. Составьте программу получения из слова «дисковод» слова «воск», используя операцию сцепления и функцию Сору.
4. Составьте программу получения слова «правило» из слова «операция», используя процедуры Delete, Insert.
5. В данном слове замените первый и последний символы на символ ‘*’.
6. В данном слове произведите обмен первого и последнего символов.
7. К данному слову присоедините столько символов ‘!’, сколько в нем имеется букв (например, из строки ‘УРА’ надо получить ‘УРА. ‘).
8. В данной строке вставьте пробел после каждого символа.
9. Переверните введенную строку (например, из ‘ДИСК’ должно получиться ‘КСИД’).
10. В данной строке удалите все пробелы.
11. Строка представляет собой запись целого числа. Составьте программу ее перевода в соответствующую величину целого типа.
Практикум
Работа 3.8. Программирование обработки строк символов
Задание
Составить на Паскале программу решения поставленной задачи по обработке символьных строк. По возможности, использовать подпрограммы. В последующих задачах подразумевается, что слова в тексте (в строке) отделяются друг от друга пробелами.
Уровень 1
1. Дана строка, заканчивающаяся точкой. Подсчитать, сколько слов в строке.
2. Дана строка, содержащая английский текст. Найти количество слов, начинающихся с буквы «b».
3. В строке заменить все двоеточия (:) точкой с запятой (;). Подсчитать количество замен.
5. В строке удалить символ двоеточие (:) и подсчитать количество удаленных символов.
6. Дана строка символов, среди которых есть одна открывающаяся и одна закрывающаяся скобки. Вывести на экран все символы, расположенные внутри этих скобок.
7. Дана строка, содержащая текст. Найти длину самого короткого и самого длинного слов.
8. Дана строка, содержащая текст, заканчивающийся точкой. Вывести на экран все слова, содержащие три буквы. Если таких слов нет, то вывести сообщение об этом.
9. Дана строка. Преобразовать ее, удалив каждый символ * и повторив дважды подряд каждый символ, отличный от *.
10. Дана строка текста. Подсчитать количество букв «k» в последнем слове.
11. Определить, сколько раз в тексте встречается заданное слово.
Уровень 2
12. Дана строка-предложение на английском языке. Преобразовать строку так, чтобы каждое слово начиналось с заглавной буквы.
13. Дана строка. Подсчитать, сколько различных символов встречается в ней. Вывести их на экран.
14. Дана строка. Подсчитать самую длинную последовательность подряд идущих букв «а».
15. Имеется строка, содержащая буквы латинского алфавита и цифры. Вывести на экран длину наибольшей последовательности цифр, идущих подряд.
16. Дана строка. Указать те слова, которые содержат хотя бы одну букву «k».
17. Дана строка. Найти в ней те слова, которые начинаются и оканчиваются одной и той же буквой.
18. Строка содержит одно слово. Проверить, будет ли оно читаться одинаково справа налево и слева направо (т. е. является ли оно палиндромом).
19. В записке слова зашифрованы — каждое из них записано наоборот. Расшифровать сообщение.
20. Статистика. Дан текст. Написать программу, определяющую процентное отношение строчных и прописных букв к общему числу символов в нем.
21. Проверить, одинаковое ли число открывающихся и закрывающихся скобок в данной строке и правильно ли они расставлены, т. е. для каждой открывающей скобки есть соответствующая закрывающая скобка.
Уровень 3
22. Из заданной символьной строки выбрать те символы, которые встречаются в ней только один раз, в том порядке, в котором они встречаются в тексте.
23. Расстояние между двумя словами равной длины — это количество позиций, в которых эти слова различаются. В заданном предложении найти пару слов заданной длины с максимальным расстоянием.
24. Форматирование текста. Дан текст, состоящий из предложений, разделяемых точками. Напишите программу, производящую следующее форматирование: после каждой точки в конце предложения должен стоять хотя бы один пробел; первое слово в предложении должно начинаться с прописной буквы.
Замечание. Текст может быть как на русском, так и на английском языке.
25. Лишние пробелы. Дана строка, состоящая из слов, разделенных пробелами. Напишите программу, удаляющую лишние пробелы. Пробел считается лишним, если он:
• стоит в начале строки; • стоит в конце строки; • следует за пробелом.
26. Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Вывести строку, содержащую эти же слова (разделенные одним пробелом), но расположенные в обратном порядке.
27. Составить программу преобразования натуральных чисел, записанных в римской нумерации, в десятичную систему счисления.
28. а) Дана строка-предложение. Зашифровать ее, поместив вначале все символы, расположенные на четных местах, а затем, в обратном порядке, все символы, расположенные на нечетных местах. (Например, строка ‘Программа’ превратится в ‘ргамамроП’.) б) Запрограммировать решение обратной задачи (расшифровки).
В данный момент вы не можете посмотреть или раздать видеоурок ученикам
Чтобы получить доступ к этому и другим видеоурокам комплекта, вам нужно добавить его в личный кабинет, приобрев в каталоге.
Получите невероятные возможности
Конспект урока «Объекты алгоритмов. Величины»
· Постоянные и переменные величины;
Итак, алгоритм описывает последовательность действий, производимых над некоторыми объектами, которые указываются в условии задачи.
Например, при решении задачи о зачислении абитуриентов, в высшее учебное заведение, объектами могут быть, номер абитуриента, его фамилия, имя и отчество, количество баллов, которые он набрал при сдаче ЕГЭ и так далее.
В информатике отдельный информационный объект, например, число, символ, строка или таблица, называется величиной.
Все величины делятся на два вида:
· постоянные – их ещё называют константы. Это величины, значение которых определяется в тексте алгоритма и в процессе его исполнения не изменяется.
· переменные величины – это величины, значения которых в процессе исполнения алгоритма меняется.
Значение переменной величины, которое она имеет в каждый момент времени в процессе исполнения алгоритма, называется текущим.
Например, такие величины как скорость света в вакууме, число π, число часов в сутках (где величина t – это количество часов в сутках) являются постоянными. А вот скорость движения пешехода или атмосферное давление являются переменными так как скорость пешехода и давление могут изменяться, а, например, в сутках всегда 24 часа.
В алгоритмах можно выполнять следующие операции над величинами:
· арифметические, такие как сложение, вычитание, умножение, деление;
· отношения – это операции больше, меньше, равно, больше либо равно, меньше либо равно.
· логические операции, такие как И, НЕ, ИЛИ.
Объекты, над которыми выполняются операции, называются операндами.
Однако не всякий объект может быть операндом для выполнения какой-либо операции.
Например, число ноль не может быть операндом для выполнения арифметической операции деления на ноль или графические изображения не могут быть объектами для выполнения арифметических операций.
Величины, которые объединены определённым множеством допустимых операций, называют величинами определённого типа.
В математике и физике работают с числовыми величинами: натуральными, целыми, действительными и другими числами.
Величины каких типов можно использовать для записи алгоритма?
При записи алгоритмов используют величины: числового (целого и вещественного), символьного, литерного и логического типов.
При формировании алгоритмов чаще всего используют числовые величины целого и вещественного (действительного) типов, которые в алгоритмическом языке обозначаются цел и вещ соответственно.
В задачах, которые возникают в повседневной жизни, встречаются и нечисловые величины, значениями которых могут являться символы, слова, тексты и прочее.
Для алгоритмов обработки текста применяют величины двух видов: символьные и литерные.
Величины логического типа могут принимать всего два значения:
Для описания переменных типа ″целый″ используется ключевое слово цел, типа ″вещественный″ – вещ, типа ″литерный″ – лит, типа ″символьный″ – сим, типа ″логический″ – лог.
Например, цел k, m; вещ а, t, c; лит p, q; сим i, g; лог s, t.
Нужно определить типы следующих величин:
масса малотоннажного грузовика.
В Википедии сказано, что грузовой автомобиль (малотоннажный) — это автомобиль, полная масса которого не должна превышать трёх с половиной тонн, три целых пять десятых – это вещественная величина.
Александр Сергеевич Пушкин родился в 1799 году – это число, а, следовательно, числовая величина целого типа.
Площадь треугольника может быть выражена дробным числом – это вещественная величина.
Название дня недели.
Понедельник, вторник, среда и так далее – всё это литерные величины.
Количество мест в поезде.
Числом мест в поезде может быть только целое число, следовательно, это целая величина.
Для обозначения (именования) величин, а также других объектов, которыми оперируют в алгоритмах, используются символические имена в виде идентификаторов.
Имя величины может состоять из одной или нескольких латинских букв, из латинских букв и цифр: B, N, АS.
Необходимо выбирать мнемонические имена, то есть имена, которые отражают суть объектов решаемой задачи, например, Сумма, План, Цена и так далее.
Образно, величину можно представить ящиком. Наполнять данный ящик-величину будем значениями этой величины, ну а ярлык, повешенный на ящик — это имя величины.
Пришло время подвести итоги урока.
В информатике отдельный информационный объект, например, число, символ, строка, таблица и другие, называется величиной.
Все величины делятся на два вида:
постоянные или константы. Это величины, значение которых определяется в тексте алгоритма и в процессе его исполнения не изменяется.
переменные величины – это величины, значения которых в процессе исполнения алгоритма меняются.
Для возможности ссылаться на величины используют их имена (идентификаторы).
Имя величины может состоять из одной или нескольких латинских букв, из латинских букв и цифр.