4828

Символы и строки в среде разработки Object Pascal

Лекция

Информатика, кибернетика и программирование

Символы и строки. Цель: Повторение со студентами записи символов и строк. Задачи: Воспитательная: необходимость повторения. Учебная: повторение записи символов и строк в среде разработки ObjectPascal. Развивающая: развитие внимательности. План...

Русский

2012-11-27

80 KB

5 чел.

Символы и строки.

Цель:

Повторение со студентами записи символов и строк.

Задачи:

Воспитательная: необходимость повторения.

Учебная: повторение записи символов и строк в среде разработки Object Pascal.

Развивающая: развитие внимательности.

План занятия.

  1.  Организационный момент.
  2.  Изучение нового материала.
  3.  Контрольные вопросы.
  4.  Резюме.
  5.  Домашнее задание.

Изучение нового материала.

   Компьютер может обрабатывать не только числовую информацию, но и символьную. Язык Delphi оперирует с символьной информацией, которая может быть представлена как отдельными символами, так и строками (поcледовательностью символов).

Символы

   Для хранения и обработки символов используются переменные типа Ansichar и wideChar. Тип Ansichar представляет собой набор ANSI-символов, в котором каждый символ кодируется восьмиразрядным двоичным числом (байтом). Тип wideChar представляет собой набор символов в кодировке Unicode, в которой каждый символ кодируется двумя байтами. Для обеспечения совместимости с предыдущими версиями поддерживается тип Char, эквивалентный AnsiChar. Значением переменной символьного типа может быть любой отображаемый символ:

  •  буква русского или латинского алфавитов;
  •  цифра;
  •  знак препинания;
  •  специальный символ, например, "новая строка".

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

   Имя: char;

где:

  •  имя — имя переменной символьного типа;
  •  char — ключевое слово обозначения символьного типа.

   Примеры:

   otv: char;

   ch: char;

   Переменная типа char может получить значение в результате выполнения инструкции присваивания. Если переменная типа char получает значение в результате выполнения операции присваивания, то справа от знака := должно стоять выражение типа char, например, переменная типа char или символьная константа — символ, заключенный в кавычки. В результате выполнения инструкций

   c1 : = '*';

   с2 : = c1;

переменная c1 получает значение присваиванием значения константы, а переменная с2 – присваиванием значения переменной c1 (предполагается, что переменные c1 и с2 являются переменными символьного типа).

   Переменную типа char можно сравнить с другой переменной типа char или с символьной константой. Сравнение основано на том, что каждому символу поставлено в соответствие число, причем символу 'о' соответствует число меньшее, чем символу 9, символу 'А' — меньшее, чем 'в', символу 'z' — меньшее, чем а. Таким образом, можно записать:

'0'<'1'<..<'9'<..<'A'<'B'<..<'Z'<'a'<'b'<..<'z'

   Символам русского алфавита соответствуют числа большие, чем символам латинского алфавита, при этом справедливо следующее:

'А'<'Б'<'В'<..<'Ю'<'Я'<'а'<'б'<'в'<...<'э'<'ю'<'я'

   В тексте программы вместо символа можно указать его код, поставив перед числом оператор #. Например, вместо константы 'в' можно записать #193. Такой способ записи, как правило, используют для записи служебных символов или символов, которые во время набора программы нельзя ввести с клавиатуры. К примеру, часто используемый при записи сообщений символ "новая строка" записывается так: #13.

   В программах обработки символьной информации часто используют функции chr и Ord. Значением функции chr является символ, код которого указан в качестве параметра. Например, в результате выполнения инструкции c:=chr(32) переменной с будет присвоено значение пробел. Функция ord позволяет определить код символа, который передается ей в качестве параметра. Например, в результате выполнения инструкции k:=ord('*') переменная k будет содержать число 42 – код символа *.

   Рассмотрим программу вывода кодировки букв русского алфавита. Вид окна программы и вид окна приложения во время работы приведен на рис.

         

   Основную работу выполняет процедура обработки события OnActivate, которая формирует и выводит в поле метки (Label1) таблицу. Событие OnActivate происходит при активизации формы приложения, и поэтому процедура TForm1.FormActivate выполняется автоматически, сразу после появления формы на экране.

unit tablsim_;

interface

uses

 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;

type

 TForm1 = class(TForm)

   Label1: TLabel;

   procedure FormActivate(Sender: TObject);

 private

   { Private declarations }

 public

   { Public declarations }

 end;

var

 Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormActivate(Sender: TObject);

var

  st:string;   // таблица формируется как строка символов

  dec: byte;   // код символа

  i,j:integer; // номер строки и колонки таблицы

begin

  st:=' ';

  dec:=192;

  for i:=0 to 15 do // шестнадцать строк

  begin

    dec:=i + 192;

    for j:=1 to 4 do // четыре колонки

    begin

      st:=st+chr(dec)+'-'+IntToStr(dec)+'  ';

      dec:=dec + 16;

    end;

    st:=st + #13;   // переход к новой строке экрана

  end;

  Label1.caption:=st;

end;

end.

   Форма приложения Таблица символов содержит только один компонент – поле метки (Label1). Для того чтобы колонки таблицы имели одинаковую ширину, свойству Label1.Font.Name следует присвоить имя шрифта, у которого все символы имеют одинаковую ширину, например, courier New cyr.

Строки

   Строки могут быть представлены следующими типами: shortstring, Longstring и widestring. Различаются эти типы предельно допустимой длиной строки, способом выделения памяти для переменных и методом кодировки символов. Переменной типа shortstring память выделяется статически, т. е. до начала выполнения программы, и количество символов такой строки не может превышать 255. Переменным типа Longstring и widestring память выделяется динамически – во время работы программы, поэтому длина таких строк практически не ограничена. Помимо перечисленных выше типов можно применять универсальный cтроковый тип String. Тип String эквивалентен типу Shortstring. Переменная строкового типа должна быть объявлена в разделе объявления переменных. Инструкция объявления в общем виде выглядит так:

   Имя: String;

или

   Имя: String [длина]

где:

  •  имя — имя переменной;
  •  string — ключевое слово обозначения строкового типа;
  •  длина — константа целого типа, которая задает максимально допустимую длину строки.

   Пример объявления переменных строкового типа:

   name: string[30];

   buff: string;

   Если в объявлении строковой переменной длина строки не указана, то ее длина задается равной 255 символам, т. е. объявления

   stroka: string [255];

   stroka: string;

эквивалентны.

   В тексте программы последовательность символов, являющаяся строкой (строковой константой), заключается в одинарные кавычки. Например, чтобы присвоить строковой переменной parol значение, нужно записать:

   parol:= 'Большой секрет';

или

   parol:= '2001';

   Следует обратить внимание, что инструкция parol:=2001; неверная, т.к. тип константы не соответствует типу переменной. Во время компиляции этой инструкции будет выведено сообщение: incompatible types: 'Char' and 'Integer' (типы Char и Integer несовместимы).

   Используя операции =, <, >, <=, >= и <>, переменную типа string можно сравнить с другой переменной типа string или со строковой константой. Строки сравниваются посимвольно, начиная с первого символа. Если все символы сравниваемых строк одинаковые, то такие строки считаются равными. Если в одинаковых позициях строк находятся разные символы, большей считается та строка, у которой в этой позиции находится символ с большим кодом. В табл. приведены примеры сравнения строк.

Таблица. Сравнение строк

Строка 1

Строка 2

Результат сравнения

Иванов

Иванов

Строки равны

васильев

Васильев

Строка 1 больше строки 2

Алексеев

Петров

Строка 1 меньше строки 2

Иванова

Иванов

Строка 1 больше строки 2

   Кроме операции сравнения, к строковым переменным и константам можно применить операцию сложения, в результате выполнения которой получается новая строка. Например, в результате выполнения инструкций

   f irst__name: ='Иван' ;

   last_name:='Иванов';

   ful_name:=first_name+last_name;

переменная fui_name получит значение 'Иван Иванов'.

Операции со строками

   В языке Delphi есть несколько полезных при работе со строками функций и процедур. Ниже приведено их краткое описание и примеры использования.

Функция length

   Функция length возвращает длину строки. У этой функции один параметр – выражение строкового типа. Значением функции length (целое число) является количество символов, из которых состоит строка. Например, в результате выполнения инструкций

   n:=length('Иванов');

   m:=length(' Невский проспект ');

значение переменных n и m будет равно 6 и 20.

Процедура delete

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

delete(Строка, p, n)

где:

  •  Строка — переменная или константа строкового типа;
  •  p — номер символа, с которого начинается удаляемая подстрока;
  •  n — длина удаляемой подстроки.

   Например, в результате выполнения инструкций

   p:='Город Санкт-Петербург';

   delete(s,7,6);

значением переменной s будет строка ' город Петербург'.

Функция роs

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

   pos (Подстрока,Строка) ;

   где Подстрока — строковая константа или переменная, которую надо найти в строковой константе или переменной строка.

   Например, в результате выполнения инструкции

   р := pos('Пе','Санкт-Петербург');

значение переменной р будет равно 7. Если в строке нет искомой подстроки, то значение функции роз будет равно нулю.

   Ниже приведена инструкция while, в результате выполнения которой удаляются начальные пробелы из строки st.

   while(pos(' ',st) = 1) and(length(st) > 0) do 

      delete (st,1,1);

   Пробелы удаляет инструкция delete (st, 1, 1), которая выполняется в цикле до тех пор, пока первым символом строки является пробел (в этом случае значение роs (' ',st) равно единице). Необходимость проверки условия length (st) > 0 объясняется возможностью того, что введенная строка состоит только из пробелов.

Функция сору

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

   сору( Строка, p, n )

где:

  •  строка — выражение строкового типа, содержащее строку, фрагмент которой надо получить;
  •  р — номер первого символа, с которого начинается выделяемая подстрока;
  •  n — длина выделяемой подстроки. Например, в результате выполнения инструкций

   st:= 'Инженер Иванов';

   fam:=copy(st, 9, 6) ;

значением переменной fam будет строка 'Иванов'.

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

  1.  Какие переменные используются для хранения и обработки символов?
  2.  Как выглядит инструкция объявления символьной переменной?
  3.  Какими типами представлены строки? В чем их различие?
  4.  Как выглядит запись переменной строкового типа?
  5.  Какую роль выполняет функция length?
  6.  Какую роль выполняет процедура delete?
  7.  Какую роль выполняет функция pos?
  8.  Какую роль выполняет функция сору?

Резюме

  1.  Для хранения и обработки символов используются переменные типа Ansichar и wideChar.
  2.  Инструкция объявления символьной переменной в общем виде выглядит так:

            Имя: char;

  1.  Строки могут быть представлены следующими типами: shortstring, Longstring и widestring. Различаются эти типы предельно допустимой длиной строки, способом выделения памяти для переменных и методом кодировки символов.
  2.  Переменная строкового типа должна быть объявлена в разделе объявления переменных. Инструкция объявления в общем виде выглядит так: Имя: String;                или Имя: String [длина]
  3.  Функция length возвращает длину строки.
  4.  Процедура delete позволяет удалить часть строки. В общем виде обращение к этой процедуре выглядит так: delete(Строка, р, п)
  5.  Функция роз позволяет определить положение подстроки в строке. В общем виде обращение к функции выглядит так:  pos (Подстрока,Строка) ;
  6.  Функция сору позволяет выделить фрагмент строки. В общем виде обращение к функции сору выглядит так: сору( Строка, р, п )

Домашнее задание

   Создать собственную программу, использующую запись символов и строк.


 

А также другие работы, которые могут Вас заинтересовать

27442. Место и роль игры в художественном образовании и обучении искусству.Философия и технология игры. Классы и виды игры.Методика проектирования, организации и проведении игры, игровых ситуаций и театрализации на уроках искусства и во внеклассной работе 33 KB
  Место и роль игры в художественном образовании и обучении искусству. Философия и технология игры. Классы и виды игры. Методика проектирования организации и проведении игры игровых ситуаций и театрализации на уроках искусства и во внеклассной работе.
27443. Современная концепция образовательной области «Искусство» в школе. Теория полихудожественного воспитания Б.П.Юсов 38.5 KB
  Теория полихудожественного воспитания Б. Обновление художественного и культурно эстетического наполнения школы начиная хотя бы с крупных центров не терпит отлагательства. В основной концепции должен быть поставлен акцент на детскую инициативу не только в практическом плане рисование танец сочинение но и в условоении художественного наследия путем преображения достижений культуры в стимул саморазвития через творческие усилия самих детей в прцессе усвоения культуры прошлого. Юсов Он обосновал и разработал новые творческие пути и идеи в...
27444. К какому виду юридических фактов отнести смерть гражданина в результате несчастного случая 25.5 KB
  Юридические факты это конкретные жизненные обстоятельства с которыми норма права связывает возникновение изменение и прекращение правоотношений. Виды ЮФ: 1 По последствиям: правообразующие влекут возникновение правоотношений; правоизменяющие влекут изменение правоотношений; правопрекращающие влекут прекращение правоотношений. 2 По форме проявления: положительные обстоятельства требующие их наличия для возникновения правоотношений; отрицательные обстоятельства требующие их отсутствия для возникновения правоотношений.
27445. Какая форма права отсутствует в российской правовой системе: правовой обычай, нормативный акт, административный прецедент, акт референдума, правосознание 28 KB
  Источник права в материальном смысле совокупность материальных производственных общественных отношений во многом обусловливающих сущность права и содержание правовых норм. Источник права в идеологическом смысле это совокупность взглядов идей теорий суждений отражающих представления людей о праве действующем и желаемом. Источник права в юридическом смысле формы способы выражения объективации правовых норм; собственно форма права.
27446. Какие из перечисленных актов являются нормативно-правовыми: Приказ начальника ИУ регламентирующий порядок выдачи денежного довольствия, решение комиссии о назначении пенсии, Уголовный кодекс, постановление о возбуждении уголовного дела, приговор суда, уст 33 KB
  Нормативные правовые акты это предписания субъектов правотворчества содержащие юридические нормы. По юридической силе различают: законы акты обладающие высшей юридической силой УК РФ и подзаконные акты акты основанные на законах и им не противоречащие. Индивидуальные правовые акты это акты государственных органов негосударственных организаций должностных лиц выражающие решение по конкретному юридическому делу приговор или решение суда приказ руководителя предприятия или учреждения и др. Индивидуальные акты это акты...
27447. Какие нормы реализуются в форме применения (запрещающие, обязывающие, управомочивающие) 26 KB
  Применение права это государственновластная деятельность компетентных государственных органов должностных лиц и уполномоченных организаций по реализации конкретных норм права относительно конкретных жизненных случаев путем вынесения индивидуальноконкретных правовых предписаний. Признаки правоприменения отличающие его от иных форм реализации права: властная деятельность компетентных государственных органов и уполномоченных общественных организаций; деятельность по индивидуализации правовых предписаний относительно конкретного субъекта...
27448. Какие формы реализации права можно проявить в процедуре заключения брака 25.5 KB
  Реализация права как процесс может быть охарактеризован с объективной и субъективной стороны. С объективной стороны совершение предусмотренных нормами права правомерных действий определенными средствами в известной последовательности в некоторые сроки и некотором месте. Формы реализации правовых норм: 1 По характеру правореализующих действий: использование права осуществление субъектами своих прав; исполнение права обязательное совершение предусмотренных обязывающими нормами действий; соблюдение права воздержание от совершения...
27449. Каков порядок принятия, опубликования и вступления в силу федеральных законов 24 KB
  Порядок принятия федеральных законов определяется Конституцией Российской Федерацией и регламентами палат Федерального собрания. Федеральные законы принимаются Государственной Думой большинством голосов от общего числа депутатов. После этого закон должен быть одобрен Советом Федерации также большинством голосов от общего числа его членов.
27450. Каково назначение охранительных норм 24 KB
  Охранительные нормы определяют условия применения к субъекту мер государственнопринудительного воздействия характер и содержание этих мер. Эти нормы возникают вследствие нарушения норм регулятивных. Охранительные нормы регулируют отношения связанные с юридической ответственностью.