TURBO PASCAL

Новости           

Программы

Turbo Pascal

Игры

Документация

"Странности"

FAQ

Ссылки

Гостевая книга

Рассылка

Благодарности

От автора

 

 

 

СТРОКИ

Вступление
Теория
Программа
Голосование
Послесловие

Вступление

Добрый день!
Пока на вопросы из прошлого выпуска, пришло всего лишь 2 ответа, будем ждать.... А пока читайте очередной выпуск рассылки.

Теория

Давайте подумаем, как мы можем представить строки ? Нам известен тип символов (char) поэтому строку вполне логично представить, как массив символов. Вот и в Паскале есть тип String, который очень похож на array [0 .. N] of char. N можно задать явно (объявить переменную String[N]) или вообще не задавать, тогда будет использоваться значение 255. К любому символу строки можно обратится точно так же как и к элементу массива. Давайте рассмотрим примерчик:

var
   st : String;
begin
     st := 'Turbo Pascal';
	 .....	 
Самый первый элемент строки st [0] - содержит длинну строки. Дальше идут символы строки. Для нашего примера st[0] = 12, st[1] = 'T', st[2] = 'u' и т.д. Длинну строки (в целых числах) можно получить двумя способами:
  1. функция LENGHT (STR) - возвращает длинну строки str
  2. Использовать ORD (st[0])
Например так:
var
	st :  String;
	i : integer;
....................
   i := ord (st[0]); - в i длинна строки
   .....................
   i := lenght (st );  - в i длинна строки
   ...........
Если длинна строки будет больше N, то строка автоматически урежется до нужного размера! Например программа
var
   st : String [10];
begin
     st := 'Turbo Pascal';
     writeLn (st)
end.
выведет на экран Turbo Pasc Вот так! Будте внимательны!

К строкам можно применять операцию "сцепление" - "+". Например st := 'a' +'b', потом st = 'ab'

для работы со строками в Паскале имеется мощный арсенал функций:
CONCAT (S1, S2, ... , Sn) - получает переменное число параметров (как write). Возвращает строку, представляющую собой сцепление строк S1, S2, ..Sn.
COPY (ST, INDEX, COUNT) - возвращает строку, содержащую COUNT символов строки ST, начиная с номера INDEX
DELETE (ST, INDEX, COUNT) - удаляет COUNT символов из строки ST, начиная с символа под номером INDEX.
INSERT (SUB, ST, INDEX) - вставляет строку SUB в строку ST, начиная с номера INDEX.
LENGHT (ST) возвращает целое число (integer) - длинну строки ST
POS (SUB, ST) - ищет строку SUB в строке ST (до первого нахождения) . Возвращает номер позиции с которой она начинается, если строка не найдена, то 0. Тип возращаемого значения - Integer
STR (X, ST) - преобразует число Х (любого типа) в строку символов ST (из 123 получим '123'). Число Х может иметь формат. Подробнее об формате смотрите выпуск "Типы данных".
VAL (ST, X, CODE) - перобразует строку ST в целую или вещественную переменную Х. CODE содержит 0, если преобразование прошло успешно. В противном случае - номер ошибочного символа. Например val ('    123', x, c) будет x = 123, с = 0. НО val ('123    ', x, c) - с = 4. Т.е. пробелы допустимы перед числом, но не после него!
Конечно это краткое описание не может дать полног представления об функциях, но увы времени на подготовку этого выпуска совсем мало :(((( Поэтому наша фирма предоставляет вам уникальную, доселе невиданную возможность :) - поэксперементировать с этими функциями. Напишите программку, которая просто по очереди вызывает функции для работы со строками. Если возникнут вопросы - пишите ibp7@yandex.ru

Так же над строкаи можно выполнять операции сравнения (=, <> , >, <, >=, <=). Но подробнее об этом в разделе программа.

Программа

Сегодня мы напишем программу, которая выведет на экран таблицу символов. В этой таблице 256 символов. С некоторыми символами вы уже знакомы - это буквы. Но есть ещё большое количество символов - так называемые символы псевдографики. С их помощью можно например чертить таблицы. Весь интерфейс BP организован с помощью этих символов. Вот сегодня мы и выведем их на экран!

Для этой цели можно было бы использовать array [1..256] of char, но куда проще написать это через строку!

Program Table;

var
   st : string;
   i : integer;
begin
     for i := 0 to 255 do
     begin
          st [i] := chr (i);
          write(st[i], #32)
     end
end.
Итак как вы видите мы использовали строку просто как массив, если вы попытаетесь вывести её на экран (write (st)), то ничего не выйдет. Почему ? Потому что мы в цикле присваеваем всем символам строки номер. А st[0] = 0 !!! А ведь в st[0] у нас хранится длинна строки !

Я надеюсь, что все уже успели выучить, что Паскаль - строго типизированный язык. Поэтому что бы присвоить символу целое значение, нам нужно его преобразовать к символу. Это и делает функция chr !

Теперь мы познакомились с таблицей символов. Обратите внимание, что руские буквы идут не подряд. Вначале от 'а' до 'п' потом 'р' до 'я' и ещё в конце идёт буква 'ё' !

Вернемся к сравнению строк. Все операции сравнения над двумя строками выполняются по-символьно слева на право, с учётом таблицы символов. Если одна строка меньше другой, то короткая дополняется 0-ым символом до нужной длинны! Например следующие сравнения будут истинны:

'A' > '1'
'a' > 'A'
'Turbo' < 'Turbo Pascal'
'Паскаль' > 'Pascal'

Голосование

Голосовани по поводу объяснения материала в рассылке всё ещё доступно - http://narod.yandex.ru/survey/?id=79839.

Послесловие

Ну вот вообщем-то и всё! Не слишком много, но ... Следующий выпуск будет по больше.... надеюсь :)

 

На первую страницу

 

Rambler's Top100 PROext: Top 1000 Rambler's Top100
(с)Все права защищены

По всем интересующим вопросам прошу писать на электронный адрес

Hosted by uCoz