Rambler's Top100


Давайте подумаем, как мы можем представить строки ? Нам известен тип символов (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. Т.е. пробелы допустимы перед числом, но не после него!
Конечно это краткое описание не может дать полног представления об функциях, но увы времени на подготовку этого выпуска совсем мало :(((( Поэтому наша фирма предоставляет вам уникальную, доселе невиданную возможность :) - поэксперементировать с этими функциями. Напишите программку, которая просто по очереди вызывает функции для работы со строками. Так же над строкаи можно выполнять операции сравнения (=, <> , >, <, >=, <=). Но подробнее об этом в разделе программа.

Программа

Сегодня мы напишем программу, которая выведет на экран таблицу символов. В этой таблице 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'




программирование на Паскале, Pascal, BP, TP, BorlandPascal, TurboPascal turbo pascal 7.0, borland pascal 7.0, языки программирования, pascal учебник
Рад приветствовать! =) Начнем мы с истории данного сайта. Изначально он разрабатывался как типично авторский проект, не неся в себе особых целей. Я лишь хотел освоить азы html верстки и опробывать свои силы в разработке web-сайтов. Тематика "программирование на Паскале" была выбрана не случайно, до этого я долго изучал этот ЯП и всё это вылилось в написание собственного самоучителя по Паскалю. Сейчас это всё вспоминается с некоторой долей иронии и улыбкой на лице. В нынешнее время я полностью занимаюсь web-разработками и отошел от прикладного программирования, но данный проект решил всё же не забрасывать и вдохнуть в него новую жизнь, освежив дизайн и контент.

С уважением, Евгений Злобин
турбо-паскаль скачать, файлы паскаль, бесплтано скачать pascal