|
Число, записанное в строковую переменную, естественно числом не является, но очень часто требуется его все же использовать в качестве числа. Для этого нужно произвести преобразование типа. Перевод строкового представления числа в числовое выполняет в Паскале оператор Val.
Его формат: Val (S,X,C);
Здесь S - строка, содержащая число, X - числовая переменная, в которую будет помещен результат, С - переменная целочисленного типа, в которую помещается первого встреченного в S отличного от цифры символа. Если после выполнения оператора Val переменная С имеет значение 0, то это означает, что преобразование типа прошло совершенно успешно и в строке нецифровых символов не встретилось.
Противоположное действие осуществляет
оператор Str. Формат оператора: Str(X,S);
X - число (либо арифметическое выражение), S - строковая переменная.
В переменную S попадает строковое представление числа X. Это нужно, например, при необходимости выводить на экран числа в графическом режиме, так как стандартные процедуры вывода на экран там работают только со строковыми величинами.
Для иллюстрации рассмотрим задачу: "Найти сумму цифр введенного натурального числа".
Program Str5;
Var
S : String;
I,X,A,C : Integer;
Begin
Writeln('Введите натуральное число');
Readln(S); {Число вводится в строковую переменную}
A:=0;
For I:=1 To Length(S) Do
Begin
Val(S[I],X,C); {Цифровой символ превращается в число}
A:=A+X {Цифры суммируются}
End;
Writeln('Сумма цифр равна ',A)
End.
Стандартные процедуры и функции.
Рассмотрим наиболее важные процедуры и функции, предназначенные для обработки строк:
Функция Copy (S, Pozition, N) копирует из строки S подстроку длиной N символов, начиная с позиции Pozition. При этом исходная строка не меняется. Здесь N и Pozition — целочисленные выражения. Пример:
Значение S
Выражение
Результат
‘Мама мыла раму’
Copy(S, 6, 4)
‘мыла’
‘Маша ела кашу’
Copy(S, 1, 8)
‘Маша ела’
Функция Concat (S1, S2, …, SN) выполняет сцепление (конкатенацию) строк S1, S2, …, SN в одну строку. Пример:
Выражение
Результат
Concat('Маша ', 'ела ', 'кашу')
'Маша ела кашу'
Функция Length (S) — определяет текущую длину строки S. Результат — значение целого типа. Пример:
Значение S
Выражение
Результат
'test-5'
Length(S)
6
'(A+B)*C'
Length(S)
7
Функция Pos (S1, S2) — обнаруживает первое появление в строке S2 подстроки S1. Результат — целое число, равное номеру позиции, где находится первый символ подстроки S1. Если в S2 подстроки S1 не обнаружено, то результат равен 0. Пример:
Значение S2
Выражение
Результат
'abcdef'
Pos('cd', S2)
3
'abcdcdef'
Pos('cd', S2)
3
'abcdef'
Pos('k', S2)
0
Процедура Delete (S, Poz, N) — удаление N символов из строки S, начиная с позиции Poz. В результате выполнения процедуры уменьшается текущая длина строки в переменной S. Пример:
Исходное значение S
Оператор
Конечное значение S
'abcdefg'
Delete(S, 3, 2)
'abefg'
'abcdefg'
Delete(S, 2, 6)
'a'
Процедура Insert (S1, S2, Poz) — вставка строки S1 в строку S2, начиная с позиции Poz. Пример:
Исходное значение S
Оператор
Конечное значение S
'abcdefg'
Delete(S, 3, 2)
'abefg'
'abcdefg'
Delete(S, 2, 6)
'a'
Для примера описания строкового типа данных приведем пару примеров:
1. программа выводит на экран длину введенной пользователем строковой величины.
Program Str1;
Var
S : String;
Begin
Writeln('Введите последовательность символов');
Readln(S);
Writeln('Вы ввели строку из ',Length(S), ' символов')
End.
2. Введенную строку вывести на экран по одному символу в строке экрана.
Program Str2;
Var
S : String;
I : Byte;
Begin
Writeln('Введите строку');
Readln(S);
For I:=1 to Length(S) do {организуем цикл, начиная с первого символа}
Writeln(S[I]) {строки, до последнего (номер последнего}
{совпадает с количеством символов строки S) }
End.
Глава II
Постановка задачи
Написать программу – телеграф, который принимает от пользователя сообщения и выводит его на экран в виде последовательности точек и тире. Вывод точек и тире можно сортировать звуковым сигналом соответствующей длительности
Азбука Морзе для букв русского алфавита приведена ниже:
А .-
Б -…
В .- -
Г - - .
Д - ..
Е
Ж …-
З - - ..
И ..
Й . - - -
К - . -
Л . - ..
М - -
Н - .
О - - -
П . - - .
Р . - .
С …
Т -
У .. -
Ф .. - .
Х ….
Ц - . - .
Ч - . - - .
Ш - - - -
Щ - - . -
Ъ - .. -
Ы - - - .
Ь - .. -
Э .. - .
Ю .. - -
Я . - . -
Блок- схема алгоритма решения задач.
Обоснование выбранного языка программ.
Язык Паскаль относится к процедурно-ориентированным языкам высокого уровня. Разработан американским ученым Никласом Виртом в 1971г. в качестве языка для обучения программированию. Базой при разработке явился язык Алгол.
Достоинства языка Паскаль:
1) относительная простота (т.к. разрабатывался с целью обучения программированию);
При использовании материалов активная ссылка на источник обязательна.