Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Заполнение строки одним символом



Строку можно заполнить одним символом:

Var

s: string;

begin

Fillchar (s, 10, ’1’);

Процедура Fillchar имеет три параметра:

1-й задает адрес (строки), с которого нужно начинать писать выбранный вами символ;

2-й сколько символов нужно написать;

3-й код (или изображение - в апострофах) записываемого символа

Будут выполнены следующие действия: с самого начала запишется 10 кодов символа ‘1’ (код = $31). В эти 10 байтов будет включен байт с индексом ноль, в котором хранится текущая длина строки. Что бы такого не было заполнение строки делается в два этапа:

Var

s: string;

begin

Fillchar (s[1], 10, ’1’); // 1 этап

s[0]: = #10; // 2 этап

end.

4) Стандартные функции и процедуры для работы со строками:

Length(s) – функция возвращает значение типа byte = текущей длине строки.

Concat (s1, s2, s3, ..., s10) - функция сцепления строк выполняется для заданных аргументов (сцепляемых строк) и возвращает значение типа string – сцепленную строку. При выполнении сцепления вторая строка записывается в хвост первой, третья – вв хвост второй и т.д.

Copy (str, start, len) – функция возвращает значение типа string – указанную часть строки:

str - строка, в которой выделяется подстрока.

start - позиция начала выделяемого фрагмента

len - размер выделяемого фрагмента (в символах).

 

ПРИМЕР. Пусть надо переставить местами левую и правую части строки.

Решение: надо выделить правую часть и добавить к ней справа (сцепить) левую часть.

Var

s: string;

begin

s: = ’abcdef’;

s: = Concat (Copy(s, 4,. 3), Copy(s, 1, 3)); //Первый вартант

или

s: = Copy(s, 4,. 3) + Copy(s, 1, 3)); //Второй вартант

 

 

Pos(s1, s2) – функция возвращает позицию (слева направо) в строке s2, с которой в ней первый раз встречается подстрока s1. Если не встречается, то возвращается 0. Эту функцию часто используют для проверки, входит или нет подстрока в строку (если POS возвращает не 0, то входит).

Delete (s, Start, Len) - процедура которая удаляет часть строки:

s -строка, Start - начало, Len - длина

Insert (s1, s2, start) – процедура вставляет подстроку s1 в заданную строку s2, start - позиция начала с которой s1 вставляется в s2.

ПРИМЕР: пусть надо заменить вторую половину первой строки на первую половину второй.

Решение: в Паскале нет операции «заменить», но ее можно реализовать с помощью двух действий: 1) удаление (delete) и 2) вставка (insert).

s1: = ‘abcdef’;

результатам должно быть ‘abc123'

s2: =’123456’;

Выполнение:

delete(s1, 4, 3); // удаляем из 1-ой строки правую (заменяемую) часть

insert( copy (s2, 1, 3), s1, 4); // вставляем левую половину 2-ой строки в коней 1-ой

 

левая часть строки s2

 

 

5) Подпрограммы преобразования из строкового представления в числовое и наоборот:

Процедура вывода числа в строку:

Str (число [: общая ширина: дробная часть], строка);

Эта процедура предназначена для преобразования числа в строковое представление.

Параметры:

число – то, что преобразуется;

ширина - общее количество символов, которое отводится для представления числа в пределах строки. Сюда кроме цифр числа включаются а) знак «точка» (отделяет целую часть числа от дробной), б) знак числа, в) символ e (для вещественных чисел); г) знак порядка; д) порядок числа.

дробная часть - сколько знаков после точки с должно быть в изображении числа в виде строки;

строка – принимающая строка.

Str (2.35: 6: 2, s); --> для данного вызова значения числа 2.35 будет следующим: s= ‘ 2.35’.

Замечание: только при указании и ширины и дробной части вещественное значение попадет в строку в формате с фиксированной точкой (иначе - в формате с плавающей точкой).

Процедура преобразования строки в число:

Val (строка, число, код_ошибки); - процедура возвращает для входной строки типа string или Pchar (с символьным представлением числа) значение этого числа в переменной число.

После выполнения процедуры в параметре код_ошибки находится номер позиции, в которой обнаруживается ошибка преобразования (если все нормально, то возвращается 0).

Чтобы не возникало ошибки преобразования содержимым входной строки может быть только строка, содержащая символы с изображением значения по правилам типа, соответствующего переменной «число».

ПРИМЕР.

Х - переменная целого типа. Следовательно, в строке s не может быть точек, пробелов, символа ‘Е’, символов букв.

ПРИМЕР.

Var

s: string;

x: Real;

i: Integer;

Begin

s: = ‘12.34’;

Val (s, x, i); // i будет равно 0, а x будет равен 12.34

s: = ‘123 ’; // Пробел вызовет ошибку преобразования строки в целочисленную переменную

Val (s, x, i);

После выполнения второй строки программы, значение i=0 (нет ошибок), т.к. ошибок при преобразовании строки в числе не будет и х= 12.34.

После выполнения 4-й строки i будет равно 4, т.к. в 4-й позиции находится пробел, значение х будет непредсказуемо.

Замечание: наиболее часто эти две процедуры используются для того, чтобы:

- вставить изображение (символьное) числа в строку (str);

- из изображения строки выделить число (val).

Пример: пусть нужно в середину строки вставить изображение (символьное представление) числа, равного текущему году.

Var

s1, s2: string;

i, j: integer;

begin

s1: = ’abcdef’;

i: = 2016; из s2

str(i, s2); // изображение числа записали в s2 (s2 будет равно ‘2016’)

insert(s2, s1, 4); // результат s1 = ‘abc2016def’

val(copy(s2, 4, 4), i, j ); // i будет равно 2016

end.

Далее - простейший ввод-вывод

 

 

8. Совместимость и преобразование типов.

8.1 Совместимость типов

 

Паскаль является строго типизированным языком. Это означает:

1. Все данные, используемые в программе должны быть явно объявлены, т.е. указан тип переменных (умолчание не действует).

2. Используемые одной и той же конструкции языка (выражении) данные должны быть согласованы по типу (должны иметь одинаковый или совместимые типы).

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

 

1 уровень: Эквивалентность или тождественность типов.

Существует две стороны (1 и 2) эквивалентности типов:

1) В секции описания типов два типа считаются эквивалентными, если в секции Type тип Т2 явно указан эквивалентным типу Т1 использованием знака “=”.

Type

T2 = T1

2) Две переменные V1 и V2 считаются принадлежащими к одному и тому же типу, если:

- в секции Var справа от двоеточия при объявлении переменных присутствует один и тот же идентификатор (но не описание) типа, например: Var V1: T1; V2: T1;

- переменные V1 и V2 объявляются в одной секции Var, причем перечисляются через запятую так, чтобы справа от двоеточия оказался один и тот же тип.

 

ПРИМЕРЫ тождественности и не тождественности типов:

Пример1:

Type

T1 = array [1..5] of byte;

T2 = array [1..5] of byte;

T3 = T1;

Согласно этому объявлению, типы T1 и T2 не эквивалентны, хотя имеют одно и то же описание типа. Типы Т3 и Т1, согласно последней строке, являются эквивалентными.

Пример2:

Var

V1, V2: array [1..5] of byte;

V3: array [1..5] of byte;

V4: T1;

V5: T1;

V6: T1;

Из этого описания следует:

- переменные V1 и V2 в этом описании имеют эквивалентный тип, потому что они перечисляются слева от одного и того же типа;

- переменная V3 не совместима по типу с переменными V1 и V2;

- переменные V4, V5 и V6 объявляется с типом Т1 и, согласно данному выше определению, имеют тип Т1, эквивалентный Т3.

Правило эквивалентности типов необходимо соблюдать только при вызове процедур и функций. Оно означает, что типы формальных параметров-переменных и соответствующих им фактических параметров должны быть тождественны или эквивалентны.

 

2 уровень: Совместимость типов.

Типы являются совместимыми, если:

Þ они тождественны;

Þ оба вещественны;

Þ оба целые;

Þ один тип является поддиапазоном другого;

Þ оба типа являются строками с одинаковой объявленной длиной;

Þ оба типа строковые без указания длины;

Þ …………………………………………..

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

Например, нельзя писать: ‘a’> 5. Однако можно так: byte(‘a’) > 5;

приведение типа значения

 

3 уровень: Совместимость по присваиванию (менее жесткие, чем в предыдущем случае, требования).

При следующих объявлениях:

Type

T1 =...

T2 =...

Var

V1: T1

V2: T2

оператор присваивания вида

V1: = V2;

не вызовет сообщения об ошибке, связанной с несовместимостью типов, если:

- T1 и T2 тождественны или эквивалентны;

- T1 и T2 являются совместимыми порядковыми типами и значение V2 лежит в диапазоне возможных значений V1;

- T1 и T2 - вещественные типы и значение V2 лежит в диапазоне возможных значений переменной V1;

- если T1 - вещественный, а T2 - целый тип (наоборот - нельзя! );

- если T1 - строковый, а T2 - символьный или строковый тип.

Нарушение правил совместимости типов обнаруживается обычно на стадии компиляции и сопровождается выдачей сообщения Type mismatch:

 

Var

i, j: integer;

x, y: real;

begin

i: = 25;

x: = 1.25;

y: = i; //правильно

j: = x; //ошибка

...............

 

 


Поделиться:



Популярное:

  1. Вокруг Internet Explorer сложилась ситуация, которая больше не прослеживается ни с одним другим браузером — разброс версий начинается с 6.0 и заканчивается 9.0.
  2. Дизайн оглавления, как и обложки, разрабатывается на целый год и является одним из важнейших элементов фирменного стиля.
  3. Заполнение кислородом кислородной подушки и подача пациенту
  4. Заполнение поля « Место рождения».
  5. ИНИЦИАЛИЗАЦИЯ СИМВОЛЬНОЙ СТРОКИ
  6. Какую проблему поднимал спор элеатов с Гераклитом?
  7. Консультативная работа с одним членом семьи.
  8. Копчение является одним из способов консервирования продуктов, а также особым технологическим приемом для придания своеобразного вкуса и аромата готовым пищевым изделиям.
  9. Кроме того, к новогодним и рождественским праздникам общественники будут проводить сбор вещей для создания своеобразных подарков детям из многодетных и малообеспеченных семей.
  10. Манко притворился сторонником испанцев, но тайно собирал силы для борьбы с ними. В 1535 г. он бежал в горы и начал поднимать инков на борьбу с колонизаторами.
  11. МИСТЕР ПОЛ ДЕЙНДЖЕРФИЛД ПОДНИМАЕТСЯ ПО ЛЕСТНИЦЕ ДОМА У КЛАДБИЩА И ДЕЛАЕТ НЕКОТОРЫЕ ПРИГОТОВЛЕНИЯ


Последнее изменение этой страницы: 2016-07-12; Просмотров: 769; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.06 с.)
Главная | Случайная страница | Обратная связь