Remkomplekty.ru

IT Новости из мира ПК
2 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Val паскаль что это

Процедуры 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» на экран.

TURBO PASCAL

Строковые операции

До сих пор мы с вами рассматривали программы, реализующие алгоритмы обработки числовых данных. Однако хоть ЭВМ изначально и были созданы только для этой цели, по мере развития аппаратной части появилась возможность оцифровывать данные других типов, хранить их в памяти машины, перерабатывать, выводить во внешний по отношению к компьютеру мир. Проще всего можно было так поступить с текстовой информацией. Если не ставить перед машиной задачу «понимания» смысла текста, то задача оцифровки сводится к установлению правил замены символов (литер) при вводе в компьютер на их коды и обратной замены при выводе информации на экран или принтер. Такие правила, конечно же, были составлены. Как водится, сначала их было множество (вспомните разнообразие таблиц кодировки), затем весь мир остановился на ASCII.

Все языки программирования высокого уровня имеют средства работы с литерными величинами. Паскаль — не исключение. Как вам уже известно, в стандарте языка описаны два типа переменных для литерных величин. Это — String и Char. Напомню — переменная типа Char может содержать в себе только один единственный символ, тип String предназначен для хранения строковых величин до 255 символов длиною. Кстати, вы знаете не все о типе String. При описании переменной этого типа вы можете сами указать максимальное число символов, которое можно занести в нее. Конечно же, это число не должно превышать 255. Делается это так:

    Var
    S : String[30];

Для чего это нужно?

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

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

Читать еще:  Ordinal expression expected паскаль

Также, новым для вас явится то, что при использовании строковой переменной, к каждому ее символу можно обратиться отдельно. Необходимо только знать номер нужного символа от начала строки. Его достаточно поставить после имени переменной типа String в квадратных скобках.

Пример: S[5] — пятый символ строки S.

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

Обратите внимание на то, что нумерация символов в строке начинается с единицы. Внутри квадратных скобок вместо числа может находиться выражение, результатом которого является целое число. Главное чтобы символ с таким номером в строке существовал. Но как же узнать, сколько символов в данный момент находится в строковой переменной? Для этого существует специальная функция, которая возвращает длину строковой переменной в символах. Это функция Length. Ее формат: Length(S)

Здесь S — либо строковая величина, либо строковая переменная.

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

    Program Str1;
    Var
    S : String;
    Begin

      Writeln(‘Введите последовательность символов’);
      Readln(S);
      Writeln(‘Вы ввели строку из ‘,Length(S), ‘ символов’)

    End.

Другой пример:
Решим задачу: «Введенную строку вывести на экран по одному символу в строке экрана».

Какие же еще действия можно выполнять с переменными строкового типа?

Две строковые величины можно состыковывать. Эта операция называется конкатенацией и обозначается знаком «+».

Например, результатом выполнения следующих команд:
R:= ‘kadabra’;
H:= ‘abra’;
S:=H+R;
в переменной S будет значение ‘abrakadabra’.

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

Строковые величины можно сравнивать между собой. Это относится также и к строковым переменным. Но как же компьютер определяет, какая строка больше:

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

Код символа в Паскале можно определить при помощи функции Ord.

Ее формат: Ord(C), где С — либо непосредственно указанный символ, либо переменная символьного типа, либо один символ строковой переменной. Вообще, функция Ord имеет более глубокий смысл, но об этом — позже. Есть и обратная функция, которая возвращает символ по известному коду. Это функция Chr(N), где N — выражение, приводящее к целому числу в интервале от 0 до 255 (возможные значения кода символа). Очевидно, что Chr(Ord(C))=C, Ord(Chr(N))=N.

Следующая маленькая программа выводит на экран кодовую таблицу:

Цикл в программе начинается с 32 потому, что символы с кодами от 0 до 31 являются управляющими и не имеют соответствующего графического представления.

Задача: «Определить, является ли введенная строка «перевертышем». Перевертышем называется такая строка, которая одинаково читается с начала и с конца. Например, «казак» и «потоп» — перевертыши, «канат» — не перевертыш».

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

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

Здесь S — строка, содержащая число, X — числовая переменная, в которую будет помещен результат, С — переменная целочисленного типа, в которую помещается первого встреченного в S отличного от цифры символа. Если после выполнения оператора Val переменная С имеет значение 0, то это означает, что преобразование типа прошло совершенно успешно и в строке нецифровых символов не встретилось.

Противоположное действие осуществляет оператор Str. Формат оператора:
Str(X,S);
X — число (либо арифметическое выражение), S — строковая переменная.

В переменную S попадает строковое представление числа X. Это нужно, например, при необходимости выводить на экран числа в графическом режиме (будет изучено позже), так как стандартные процедуры вывода на экран там работают только со строковыми величинами.

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

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

Val паскаль что это

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

1. Определение длины строки. Вычисление текущей длины строки производится с помощью функции Length. Ее общий вид следующий: Результатом данной функции является целое число, равное текущему количеству символов в строке. Например, при выполнении следующих конструкций: значение целой переменной K будет равно 12.

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

  • ‘Паскаль ‘>’Паскаль’ (первая строка будет больше второй, так как в первой строке еще присутствует пробел),
  • ‘Balkon’ Ord (‘B’)),
  • ‘Паскаль’=’Паскаль’ (строки совпадают посимвольно и равны по длине).

2. Удаление части символов строки. Для удаления из строки фрагмента используется процедура Delete, общий вид которой следующий:

Рис.1. Общий вид процедуры Delete

Например, при выполнении процедуры Delete(‘Язык Паскаль’,5 ,8) из строки будут удалены 8 символов, начиная с пятого, и исходная строка будет иметь вид: ‘Язык’.

3. Вставка символов в строку. Для вставки символов в строку используется процедура Insert. Ее общий вид следующий:

Рис.2. Общий вид процедуры Insert

Например, в результате выполнения процедуры Insert(‘111’, ‘ABC’,2); результирующая строка будет такой:’A111BC’.

4. Поиск подстроки в строке. Для определения позиции подстроки в строке используется функция Pos, общий вид которой следующий:

Рис.3. Общий вид функции Pos

Результат этой функции целое число. Оно определяет номер элемента, с которого начинается первое вхождение подстроки в строку. Если подстрока в строку не входит, то значение функции равно нулю. Например, при выполнении конструкции k1:=Pos(‘BC’,’ABCD’); значение переменной k1 равно 2, так как функция Pos возвращает номер элемента, с которого подстрока первый раз встречается в строке. При выполнении оператора k1:=Pos(‘ABCD’,’ BC’); значение переменной k будет равно нулю.

Приведем пример программы, иллюстрирующей выше описанные конструкции. Пусть в заданном тексте нужно заменить все вхождения подстроки ‘del’ на ‘insert’.

Решение и комментарии вы можете посмотреть здесь.

5. Склеивание строк. Для «склеивания» строк используется функция Concat, общий вид которой следующий:

Например, после выполнения следующих конструкций: на экран будет выведено сообщение: «Пароход «.

Замечание.
«Склеивание» строк можно производить, используя символ «+», например, C:=A+’о’+B; в результате строка C будет иметь вид: ‘Пароход’.

6. Копирование строк. Для копирования строк или их фрагментов используется функция Copy. Ее общий вид:

Рис.4. Общий вид функции Copy

Например, при выполнении оператора WriteLn(Copy (‘Язык Паскаль’,6,7)) на экран будет выведено сообщение:» Паскаль».

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

7. Перевод числа в строку. Для перевода числа в строку используется процедура Str, общий вид которой следующий:

Рис.5. Общий вид процедуры Str

Например, Str(1.21, St); в результате выполнения процедуры строка будет такой: St=’1.21′.

8. Перевод строкового выражения в число. Для перевода строки в число используется процедура Val. Ее общий вид:

Рис.6. Общий вид процедуры Val

Если данная строка действительно является записью числа (целого или действительного), то значение признака будет равно нулю, иначе значение признака будет равно номеру первого символа, с которым процедура Val «не справилась», то есть преобразование этого символа является невозможным.

Например, при выполнении процедуры Val (‘1234’,N,K); значение переменной N будет равно 1234, а переменная K будет равна нулю, так как строка ‘1234’ является записью целого числа. При выполнении конструкции Val(’12-34′,N,K); значение переменной N не изменится, а переменная K будет равна трем, то есть номеру символа, с которого преобразование невозможно, так как знак «-» в записи чисел может быть только на первом месте.

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

Решение и комментарии вы можете посмотреть здесь.

На следующем шаге мы разберем еще несколько задач, при решении которых используются перечисленные конструкции.

Процедура VAL

Дата добавления: 2014-02-04 ; просмотров: 1709 ; Нарушение авторских прав

Функция COPY

Функция POS

Процедура DELETE

Процедура delete позволяет удалить часть строки. В общем виде обращение к процедуре выглядит так:

Delete (Строка, p, n);

Где строка-переменная строкового типа; p- номер символа, с которого начинается удаляемая подстрока; n- длина удаляемой строки.

Например, в результате выполнения инструкции

S:=’Город Санкт -Петербург’;

Значением переменной s будет строка ‘Город Петербург’

Функция pos позволяет определить положение подстроки в строке. В общем виде обращение к функции выглядит так:

Переменная pos (Подстрока, Строка);

Где подстрока –строковая константа или переменная, которую надо найти в стоковой константе или переменной Строка.

Например, в результате выполнения инструкции

P:=pos (‘Пе’,’Санкт –Петербург’);

Значение переменной p будет равно 7.

Если в строке нет искомой подстроки, то функция pos возвращает нуль. Следующая программа, е текст приведен на листинге 7,использует функцию pos и процедуру delete для удаления пробелов в начале введенной с клавиатуры строки.

Листинг 7. Удаление начальных пробелов строки (dledspa.pas)

Write (‘Введите строку’);

While (pos (‘ ‘,st)=1) and (length(st)>0) do

Write (‘Строка без начальных пробелов:’, st);

Пробелы удаляются в цикле while до тех пор, пока функция pos обнаруживает пробел в начале строки (значение pos при этом равно еденице). Необходимость проверки условия length(st)>0 объясняется возможностью того, что введенная с клавиатуры строка состоит из пробелов. Вот пример работы программы:

Ведите строку: ул. Садовая

Строка без начальных пробелов: ул. Садовая

Функция copy позволяет скопировать фрагмент строки. В общем виде обращение к функции copy выглядит так:

Переменная copy (Строка, p, n);

Где строка – переменная строкового типа, содержащая строку, фрагмент которого надо получить; p- номер первого символ в строке Строка, с которого начинается выделяемая подстрока; n- длина выделяемой строки.

Например, в результате выполнения инструкции

St: =’Инженер Иванов’;

Значением переменной fam будет строка ‘Иванов’.

Процедура VAL позволяет преобразовать изображение числа в число. В общем виде обращение к процедуре выглядит так:

Val (Строка, Число, Код);

Где строка — строковая константа или переменная, содержащая изображение числа; Число— переменная целого или дробного типа, которой должно быть присвоено значение, изображенное строкой Строка; Код— возвращаемый процедурой код ошибки (целое число). Если строка не может быть преобразована в число из-за того, что строка не является изображением числа, то значение Код будет равно номеру символа строки, которой явился причиной невозможности преобразования.

Например, в результате выполнения инструкции

Значение переменной code равно 2, так как строк1,25 не является изображением числа, поскольку для отделения дробной части числа от целой используется точка, а не запятая.

Процедура val полезна при организации ввода с клавиатуры. Например, если в программе объявлена переменная moth (месяц) типа integer, и ее значение вводится с клавиатуры инструкцией read, то в результате возможной ошибки оператора, задавшего месяц строкой символов, например, ‘июнь’, а не цифрой, программа завершится ошибкой времени выполнения. Однако если числовые данные вводить как строку, а затем преобразовывать в число с помощью процедуры val, то можно избежать подобного неприятного завершения программы.

На листинге 8 приведен текст программ, которая выполняет проверку введенных данных при помощи процедуры val.

Val паскаль что это

Для обработки строковой информации в Турбо Паскаль введен строковый тип данных. Строкой в Паскале называется последовательность из определенного количества символов. Количество символов последовательности называется длиной строки. Синтаксис:

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 возвращается без изменения.

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

Ссылка на основную публикацию
ВсеИнструменты
Adblock
detector
×
×