Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Стандартные функции для данных типа CHAR

Поиск

Информация о функциях для переменных типа Сhar дана в таблице 5.2.


Таблица 5.2

Назначение функции Идентификатор Тип аргумента Тип функции Пример
Преобразование выражения типа байт в символ Chr Byte char x:=68; y:= chr(x); {y='D'} y:=chr(2*x-5); {y='Г'}
Преобразование изображения символа в код типа байт Ord Char Byte x:='A'; y:=ord(x); {y=128}
Возвращение предыдущего символа Pred Char Char x:='Б'; y:=pred(x); {y='A'}
Возвращение следующего символа Succ Char Char x:='Г'; y:=succ(x); {y='Д'}
Преобразование строчной буквы в прописную Upcase Char Char Ch:=’d’ Y:=Upcase(Ch) {Y=’D’}

Определение переменных строкового типа. Особенности типа STRING

Строка – это последовательность символов кодовой таблицы персонального компьютера.

Доступ к отдельному символу может быть получен путем ссылки на него при помощи индекса. Байт в позиции 0 (доступный лишь при отмене проверки диапазона) хранит число,представляющее длину текущего значения переменной типа STRING.

Применение строковых переменных в качестве селектора в операторе CASE недопустимо.

Формат определения констант строкового типа:

Const <идентификатор>=<значение>;

Например,... С1 = ‘строка 1’;...

Формат определения переменных строкового типа:

{Описание переменной типа String с помощью заданного программистом типа}

Type

<имя типа> = string[максимальная длина строки];

Var

<идентификатор,...>:<имя типа>;

{Описание переменной типа String без заданного программистом типа}

<идентификатор,...>:string[максимальная длина строки];

Максимальная длина строки не более 255; значение 255 можно не задавать.

Пример описания строк и считывания строки:

Program StrTest;

const

S1='Начало работы программы’ {Пример константы строкового типа};

var

S2: string[10];

Begin

WriteLn(S1); {Вывод значения строковой константы}

Write(' Введите строку:');

ReadLn(S2);

WriteLn(' Длина введенной строки ',S,' равна ',ord(S2[0]));

End.

Запись S[0] дает доступ к нулевому байту, содержащему значение текущей длины строки.

Значение нулевого байта не должно превышать 255, но нарушение этого правила не вызывает программного прерывания, так как директива компилятора R по умолчанию находится в пассивном состоянии {$R-}. Для обеспечения строгого контроля за диапазоном допустимых значений индекса следует перевести директиву R в активное состояние {$R+}. Активный режим R устанавливается на стадии отладки программ.

Строковые выражения

Выражения, в которых операндами служат строковые данные, называются строковыми. Они состоят из строковых констант, переменных, указателей функций и знаков операций над ними.

Над строками могут выполняться операции отношения и сцепления (конкатенации):

1. Операции отношения: <,>, =, <>, >=, <=. Результат операции отношения будет иметь тип BOOLEAN. Строки сравниваются посимвольно слева направо. При обнаружении первого несовпадающего символа принимается решение о <больше> или <меньше> в соответствии с таблицей кодов ASCII. Если две сравниваемые строки имеют различную длину, но совпадают вплоть до последнего символа более короткой строки, то более короткая строка считается меньшей.

Например:

'Pascal'='pascal' -> false

'prim'<'primer' -> true

'+'<'-' -> true

2. Сцепление: +. Использование знака + позволяет разместить строки одну за другой.

Например:

'Новый'+' '+'год'='Новый год';

Операция + дает тот же результат, что и функция CONCAT, присутствующая в языке Turbo Pascal для обеспечения его совместимости с другими версиями (описывается ниже).

Строковые процедуры и функции

Информация о строковых процедурах и функциях дана в таблице 5.3.


Таблица 5.3

Назначение процедуры или функции Заголовок процедуры или функции   Пример
Удаление N символов строки St начиная с позиции Pos Delete (St: string, Pos,N: byte) St:= 'абвгде'; Delete(St, 4, 2); {St='абве'}
Вставка строки Str1 в строку Str2 начиная с позиции Pos Insert ('*', Str2, 4) Str2:='абвгде'; Insert '*', Str2, 4 {Str2='абв*где'}
Преобразование числового значения величины V(integer или real) и помещение результата в строку St Str (V: real, St: string) V:=1500; Str(V:6, St); {St:=' 1500'}
Преобразование строки St в величину целочисленного или вещественного типа и помещение результата в V Val (St: string,V: real, Code: integer) St:='1.455'; Val(St,V,Cod); {V=1.455, Cod=0}
Сцепление строк St1, St2,... Concat (St1,St2,..,Stn:string): string St1:=’За’; St2:=’дача’; Y:=Concat(St1,St2) (Y=Задача)
Выделение из строки St подстроки длиной N символов начиная с позиции Pos Copy (St: string, Pos,N: byte): string St:='абвгде'; Y:=Copy(St, 2, 3); {Y='бвг'}
Вычисление длины строки St Length (St: string): byte St:='абвгде'; Y:=Length(St); {Y=6}
Определение позиции первого появления в строке St2 подстроки St1 Pos (St1,St2): byte St2:='abcdef'; Y:=Pos('de',St2); {Y=4}

Пример программы

Программа, осуществляющая ввод массива из 10 слов длиной 6-8 символов, в каждом слове заменяет символы 'a' на 'б', а также осуществляет преобразования вещественной и строковой констант.

Program Prim_Str;

Const CH=12.34;

KST= '12.34';

Var X: array [1..10] of string[8]; {Массив слов}

St: srting[7]; {Параметр для процедуры Str()}

V: real; {Параметр для процедуры Val}

Code: byte; {Параметр для процедуры Val}

Dl: integer; {Длина слова в массиве}

n: integer; {Позиция символа 'а'}

i, j: byte; {Переменные цикла}

Begin

{---------------Ввод массива из десяти слов-----------------}

Writeln('Программа обработки данных строкового типа');

Writeln;

Writeln('Введите 10 слов из 6-8 символов');

For i:=1 to 10 do begin

Write(i, ' -е слово ');

Readln(X[i]); end;

{----------------Вывод на экран введенных данных---------------}

Writeln('Введенные слова');

For i:=1 to 10 do Writeln(i, '-ое слово ', X[i]);

dl:=length(X[1]); {определение длины первого слова}

{----------------Вывод кодов символов первого слова--------------}

For i:=1 to dl do

Begin

Write ORD (X [1,i]); Writeln

End;

{---------------Преобразование числа в строку -----------------}

Str(CH,St);

Writeln('Число ',CH:7:3,' преобразуется в строку ', St);

{---------------Преобразование строки в число ------------------}

Val(KST, V, Code);

Writeln('Строка ', KST, ' преобразуется в число ', V);

Writeln(' код ошибки ', Code);

{------ Поиск в словах символа 'a' и замена его на символ 'б' ---}

For i:=1 to 10 do begin

{- Определение наличия символа 'а' в слове X[i] и его позиции }

n:=pos('а', X[i]);

{---Запись символа 'б' на место, занимаемое символом 'а'-----}

if n>0 then X[n]:='б' end;

{-----------Преобразование массива из 10 слов в строку и------}

{-----------------вывод результата ---------------------------}

{------предлагается запрограммировать самостоятельно------}

End.


Варианты заданий

Таблица 5.4

№ варианта Исходные данные табл. 5.5 Результат табл. 5.5 Длина слова Количество слов Решаемая задача табл. 5.6
      [3-8]    
      [5-9]    
      [4-10]    
      [6-10]    
      [6-9]    
      [5-8]    
      [6-8]    
      [5-9]    
      [5-8]    
      [3-10]    
      [4-7]    
      [3-10]    
      [3-9]    
      [3-8]    
      [4-10]    
      [4-9]    
      [6-9]    
      [6-10]    
      [3-8]    
      [5-10]    

Таблица 5.5

Структура данных
  Массив слов
  Строка слов, разделенных пробелом

Таблица 5.6

№   Решаемые задачи
  Поменять местами слова с максимальной и минимальной длиной при условии, что такие слова единственные
  Заменить окончания (последние два символа) на 'ая' в словах, длина которых равна 5
  Поменять местами слово, начинающееся на 'a', со словом, оканчивающимся на 'я', при условии, что такие слова существуют и являются единственными
  Удалить последние 3 символа из слов, начинающихся на 'a'
  Удалить первые 3 символа из слов, оканчивающихся на 'ие'
  Дополнить символом '*' слова, имеющие длину меньше максимальной по варианту задания, до максимальной
  Заменить первые 3 символа слов, имеющих выбранную длину, на символ '*'
  Удалить все символы 'а' из слов, длина которых равна выбранной
  Заменить все символы 'a' на 'd' в словах, длина которых меньше выбранной
  Заменить первые строчные буквы на заглавные в каждом слове, длина которого больше выбранной
  Вставить пробел после первых 2-х символов в слова, имеющие длину, на 1 меньше максимальной по варианту задания
  Заменить первую строчную букву на заглавную в словах, имеющих выбранную длину
  Вставить пробел перед последними 2-мя символами в слова, имеющие минимальную по варианту задания длину

Содержание отчета (см. п. 1.10)

5.9. Контрольные вопросы

1. Что такое строка?

2. Каким идентификатором определяются данные строкового типа?

3. Какова максимальная длина строки? Как определить текущую длину строки?

4. Какие выражения называются строковыми?

5. Какие операции допустимы над строковыми данными?

6. Каким образом производится сравнение строк?

7. Как можно обратиться к отдельным символам строки?

8. Каково назначение специальных процедур и функций обработки данных строкового типа?

 

Лабораторная работа №6

Разработка Pascal–программ с использованием процедур и функций пользователя

Цель работы

Приобретение навыков разработки программ с использованием процедур и функций пользователя на языке Turbo Pascal.

Задание на лабораторную работу

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

Требования к программе

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

Программа должна состоять из трех подпрограмм (процедура ввода данных, подпрограмма-функция вычисления значения, процедура вывода данных) и основной части программы.

Форма вывода результата.

Значение функции в интервале [a,b] с шагом 0.1
Аргумент Функция
... ...

Выбор значений параметров a, b, c и формата вывода результатов вычислений осуществляется разработчиком программы.

Порядок выполнения работы

1. Получить вариант задания (п. 6.6). Варианты задания содержат данные о функции, начальном и конечном значении аргумента, шаге табуляции, абсолютной погрешности.

2. Изучить структуру Pascal-программы, содержащей процедуры и функции пользователя (п. 6.5).

3. Составить схему программы.

4. Запустить интегрированную среду программирования. Ввести текст программы, записать файл на диск, откомпилировать его с использованием среды Turbo Paskal. После успешной компиляции задать для просмотра в окне отладчика значения исходных данных. Установить видимымиодновременно окна редактора с текстом программы и окно просмотра. Исполнить программу в пошаговом режиме с входом в процедуры и функции и пронаблюдать за изменениями значений переменных в основной программе, в процедурах и функциях. Обратить внимание на передачу значений при вызове процедур и функции от фактических параметров основной программы формальным параметрам, на возвращение вычисленных подпрограммами значений в точку вызова главной программы, а также на характер изменения значений локальных и глобальныхпеременных.

5. Устно ответить на контрольные вопросы (п.6.9).

6. Оформить отчет (см. п. 1.10).



Поделиться:


Последнее изменение этой страницы: 2016-04-26; просмотров: 492; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.217.105.174 (0.012 с.)