Тип STRING
| Категория реферата: Рефераты по информатике, программированию
| Теги реферата: информация реферат, курсовая работа по дисциплине
| Добавил(а) на сайт: Лукерья.
Предыдущая страница реферата | 1 2 3 4 5 | Следующая страница реферата
VAR s : STRING; L,i : Byte;
BEGIN WRITE('Введите строку '); READLN(s);
L:=ORD(s[0]);
FOR i:=1 TO L DO IF s[i] IN ['0'..'9'] THEN s[i]:=' ';
FOR i:=L+1 TO L+3 DO s[i]:='?';
WRITELN('Вот что получилось : ',s);
END.
Наша программа заменила цифры, но никаких "?" не добавила. Дело в том, что, обращаясь к элементам строки, невозможно изменить текущую длину строки. Второй цикл нашей программы сработал правильно, записав символы "?" в соответствующие элементы строки, но длина строки осталась прежней, и процедура WRITELN вывела только символы с 1-го по L-й. Чтобы решить задачу корректно, мы могли бы добавить в программу один оператор INC(s[0],3); но, конечно, лучше всего просто записать: s:=s+'???'; .
Для обработки строк в Паскале существует несколько стандартных функций и процедур :
1. FUNCTION Length(S: String): Integer; - возвращает длину строки.
2. FUNCTION Concat(S1[,S2,...,Sn]: String): String; - возвращает строку, полученную сцеплением аргументов, может использоваться вместо операции "+".
3. FUNCTION Pos(Substr: String; S: String): Byte; - возвращает номер первого слева символа строки S, начиная с которого строка Substr входит в S, если Substr не входит в S, то значение функции равно 0.
4. FUNCTION Copy(S: String; Index: Integer; Count: Integer): String; - возвращает подстроку строки S, которая начинается с символа с номером Index и имеет длину Count.
5. PROCEDURE Delete(VAR S: String; Index: Integer; Count:Integer); - удаляет из строки S подстроку, начинающуюся с символа с номером Index и имеющую длину Count.
6. PROCEDURE Insert(Substr: String; VAR S: String; Index: Integer); - вставляет в строку S подстроку Substr начиная с символа с номером Index.
Из вышеизложенного понятно, что процедуры и функции могут иметь параметры типа STRING (что неудивительно), но также допустимы функции типа STRING, хотя это и не скалярный тип. Еще две стандартные процедуры предназначены для перевода строки в число и числа в строку:
7. PROCEDURE Val(S: STRING;VAR V; VAR Code: Integer); - преобразует строку S в число V (если это возможно); V - любая переменная арифметического типа, переменная Code возвращает 0, если преобразование прошло успешно, или номер первого неправильного символа строки.
8. PROCEDURE Str(X [: Width [: Decimals ]];VAR S:STRING); - преобразует произвольное арифметическое выражение X в строку S, параметры Width и Decimals позволяют форматировать строку и имеют такой же смысл, как и в процедуре WRITE[LN] .
Теперь, зная процедуру Val, вы можете организовать надежный ввод числовых данных в любой своей программе. Предположим, что программа должна вводить вещественное значение F. Мы можем записать это так :
VAR F : Real; ... BEGIN WRITE('Введите F '); READ(F);
Если пользователь правильно введет число, то все будет в порядке, но если он ошибочно нажмет не ту клавишу (например, запятую вместо точки и т.п.), то произойдет аварийное прерывание, программа завершится, и на экране появится сообщение "Run-time error ...". Программы, таким образом реагирующие на неверный ввод, - плохие! Хорошая программа обязана обрабатывать нажатие практически любых клавиш в любых комбинациях. Мы вполне способны написать такую программу :
VAR F : Real; S : STRING; Code : Integer; ...
BEGIN REPEAT
WRITE('Введите F '); READLN(S);
Val(S,F,Code); IF Code=0 THEN Break;
Рекомендуем скачать другие рефераты по теме: сочинение рассказ, преступление реферат.
Категории:
Предыдущая страница реферата | 1 2 3 4 5 | Следующая страница реферата