русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Строковый тип в ТР


Дата добавления: 2015-06-12; просмотров: 478; Нарушение авторских прав


В ТР есть специальный тип для работы со строками переменной длины. Описание этого типа:

 
 

 

 


Целое определяет максимальную длину строки. Оно должно принадлежать промежутку [1; 255]. Например,

 
 
const n=10; var s : string[n];

 

 


Переменной s, согласно описанию, выделяется n +1 байт. Переменную s можно рассматривать, как символьный массив с типом индекса 0..nи использовать для работы со строками длиной не более n. Собственно строка начинается с символа s[1]. Нулевой элемент массива резервируется для хранения информации о динамической длине строки. В нем хранится символ с кодом, равным динамической длине строки. Если s[0] есть символ с кодом 0 (#0), то строкаs не содержит символов. Будем называть такую строку пустой. Динамическая длина определяется выражением ord(s[0]). Кроме этого, динамическую длину строки возвращает стандартная функция length(s:string): byte.

Тип string (без указания размера) эквивалентен типу string[255]. Длина строки при этом может изменяться от 0 до 255.

Ввод и вывод строк осуществляется с помощью процедур read[ln] и write[ln]. Следует обратить внимание на то, что при вводе в строку заносятся последовательно все символы из буфера ввода до символа перехода к новой строке. Сам символ перехода к новой строке остается в буфере, и с него начнется следующее считывание. Поэтому одним оператором read несколько строковых переменных ввести нельзя. При выполнении оператора read(s1, s2) строка s2 всегда будет пустой. Последовательный ввод строк можно выполнить, обращаясь к процедуре readln с одним параметром:

readln(s1); readln(s2); readln(s3);

Строковый тип ТР совместим по присваиванию:

1) с любым типом string;

2) c упакованным символьным массивом (равенство длин не требуется);



3) с символьным типом.

s:=’’;
Если строковой переменной присваивается значение, превышающее длину строковой переменной, то перед присваиванием происходит усечение присваиваемого значения.

Оператор инициализации строки s пустой строкой: . В правой части оператора присваивания два апострофа.

В ТP определена бинарная операция конкатенация (соединение строк). Знак этой операции '+'. Операндами могут быть символы, упакованные символьные массивы и строки. Результатом является строка, полученная дописыванием в конец первого операнда второго операнда.

Пример 1. var ch : char; ch_arr : array[1..3] of char; s1 : string; s2 : string[8]; begin ch := ‘W’; ch_arr := ‘ord’; s1 := ‘_and_byte’ ; s2 := ch+ch_arr+s1; writeln(ch+ch_arr+s1); writeln(s2) end.  

 

В результате выполнения программы примера 1 будет выведено

 
 
Word_and_byte Word_and  

 


Первая строка вывода - результат конкатенации, вторая - значение s2, которое получено в результате конкатенации с последующим усечением до 8 символов.

Над строковым типом определены все операции сравнения, причем если один из операндов имеет строковый тип, то другой может быть строковым, символьным или упакованным символьным массивом. Примеры истинных отношений: ‘abcwt’< ’abd’, ‘abc’ > ’ab’.

Пример 2.Словом будем называть последовательность символов, не содержащую пустых символов. К пустым символам отнесем пробел (#32), символ табуляции (#9) и переход к новой строке (#10). Можно считать, что слово не содержит не только пустых, но и любых управляющих символов, то есть символов, меньших #33. Опишем программу для определения количества слов в данной строке:

Program words_number;

var str : string;

k, i : byte; {k - счетчик числа слов, i - параметр цикла}

begin

writeln('Введите строку'); ReadLn(str);

{инициализация счетчика}

if str[1]>#32 then k:=1 {первый символ - начало слова}

else k:=0; {строка начинается пустым символом}

for i:=2 to length(str) do

if (str[i-1]<#33) and (str[i]>#32) {если начало слова }

then k:=k+1;

writeln ('Число слов строки ',str,' равно ',k);

end.

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

Пример 3. Программа удаления из строки символов, равных данному:

Program symb_del;

var str : string;

ch : char;

len, i, j : byte;

begin

writeln('Введите строку'); ReadLn(str);

writeln('Введите символ'); ReadLn(ch);

len := length(str); {Запоминаем длину исходной строки}

j := 0; {j - число сохраненных символов в преобразованной строке}

for i:=1 to len do {Просматриваем все символы строки}

if str[i]<>ch {Символ остается в строке}

then

begin j := j+1; {Увеличиваем число сохраненных символов}

str[j] := str[i] {Сохраняем символ}

end;

str[0] := chr(j); {Устанавливаем новую длину строки}

write (‘ Преобразованная строка: ', str);

end.

 

20. ПОДПРОГРАММЫ

 

Один из принципов структурного программирования заключается в разбиении задачи на достаточно самостоятельные подзадачи. Для решения каждой подзадачи можно разработать свой алгоритм и записать его в виде самостоятельного программного блока, называемого подпрограммой. Подпрограммы имеют имена, и обращаться к ним можно по именам.

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

Программа, содержащая подпрограммы, проще для создания, легче для понимания, удобнее для использования.

При разработке программ, содержащих подпрограммы, необходимо уметь описывать подпрограммы и обращаться к ним.

Подпрограммы, как и другие программные объекты, должны быть описаны в разделе описаний. Структура описания подпрограммы такая же, как и структура программы, но в описании подпрограммы заголовок обязателен и описание подпрограммы заканчивается символом ‘;’, а не точкой.

 



<== предыдущая лекция | следующая лекция ==>
Многомерные массивы | Параметры подпрограмм


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 1.172 сек.