1 какой тип данных используется в языке паскаль для обозначения символьных строк
Перейти к содержимому

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

  • автор:

Строковый тип данных в Паскале

Строки в Паскале – это данные типа string. Они используются для хранения последовательностей символов. В Паскале длина стандартной строки ограничена 255 символами. Под каждый символ отводится по одному байту, в котором хранится код символа. Кроме того, каждая строка содержит еще дополнительный байт, в котором хранится длина строки.

Если заранее известно, что длина строки будет меньше 255 символов, то программист может сам задать максимальную длину строки.

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

type str_type = string[12]; const n = 50; var s1: string; s2, s3: str_type; s4: string[n]; s5, s6, s7: string[7];

Длина строки хранится в первом ее байте, индекс которого равен 0.

Объявление типизированной константы для типа string выглядит так:

const s: string = 'FreePascal'

Существует понятие пустой строки, то есть строки, в которой нет ни одного символа. Пустая строка обозначается двумя рядом стоящими апострофами (например, st := » ).

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

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

s1 := 'this is text'; s2 := s1;

Строки можно объединять с помощью операции конкатенации, которая обозначается знаком + .

s1 := 'John'; s2 := 'Black'; s1 := s1 + ' ' + s2;

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

'abc' > 'ab' (true) 'abc' = 'abc' (true) 'abc' < 'abc ' (false)

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

readln(s1); write(s1);

К отдельному символу строки можно обращаться как к элементу массива символов, например s1[3] . Символ строки совместим с типом char, их можно использовать в выражениях одновременно, например:

s1[3] := 'h'; writeln(s2[3] + 'r');

Можно осуществлять коррекцию любого символа строковой переменной, для чего в соответствующем операторе достаточно указать имя переменной типа string , вслед за которым в квадратных скобках задается номер ее элемента (например, str[3] := 'j' ).

Элементы строки нумеруются с единицы, так как в каждой строковой переменной имеется элемент с номером 0, в котором в виде символа хранится длина текущей строки. Чтобы узнать текущую длину, достаточно применить функцию ord к нулевому элементу строки. Например:

writeln(ord(st[0]))

Нулевой элемент строковой переменной можно корректировать. При этом будет изменяться текущая длина строки. Например, выражение str[0] := #50 устанавливает текущую длину равной 50.

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

Теперь применим полученные знания о представлении текстовой информации на практике. В языке программирования Паскаль для работы с текстовой информацией есть специальный символьный тип переменных, который называется char (от английского character). Переменные этого типа занимают в оперативной памяти по `1` байту и, соответственно, могут принимать `256` различных значений. Значениями переменных этого типа являются элементы какой-либо однобайтовой кодовой таблицы (например, KOI-`8` или Windows-`1251`). Какие именно символы являются значениями данного типа, зависит от того, какая кодовая таблица используется в момент выполнения (а не написания) программы. То есть одна и та же программа, например, печатающая изображение всех символов кодовой таблицы, на компьютерах с различными текущими кодировками будет иметь различные результаты работы.

Переменным символьного типа можно присваивать значения при помощи оператора присваивания. При этом есть два способа записи символьных констант. Первый способ – записать явное изображение символа, заключив его в апострофы. Пусть, например, переменная C имеет тип char. Присвоим ей значение: C:= 'a'; Описанный способ записи символьных значений удобно применять практически всегда. Единственный недостаток этого способа заключается в том, что так невозможно представить служебные символы, которые не имеют явных изображений (в кодовой таблице это первые `32` символа). Поэтому существует ещё один способ записи символьных констант – сначала указать спецсимвол решётку ( # ), а потом код интересующего нас символа. Например, C:=#13; Недостаток этого способа заключается в том, что нужно помнить коды всех символов, поэтому обычно его применяют только для записи символов без явного изображения.

Переменные типа char можно выводить на экран при помощи оператора вывода и вводить с клавиатуры. Апострофы при вводе набирать не нужно (каждый апостроф также будет считаться отдельным символом). Служебные символы вводятся следующим образом: нужно зажать alt и на правой цифровой клавиатуре набрать код символа (например, 13).

К переменным типа char можно применять операции сравнения ( > , < , >= , ). При этом сравниваются коды символов и большим признаётся символ, имеющий больший код (то есть символ, находящийся дальше от нулевого). Результатом операции сравнения является логическое значение – true или false .

Существует `5` стандартных функций для работы с переменными символьного типа:

Функция

Действие

Тип

аргумента

Тип

результата

#8.1 Строковый тип данных String в Паскаль. Начало работы со строками

vedro-compota's picture

Строковый тип данных позволяет использовать в программе последовательности из многих символов, которые также называют "строками".

Строковые литералы

Мы уже говорили о строковых литералах ранее.
Строковые литералы -- это последовательности символов взятые в кавычки, но в отличии от символьных литералов, в строковых может быть много символов (а в символьных только один).

Пример оформления строкового литерала:

'СПО ВГУ' // строка из 7 символов

Строковые переменные

Строковые переменные объявляются следующих образом:

var a, b, c: string; // объявляем три переменные строкового типа

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

Приведём пример присваивания литерала переменной и одной переменной другой переменной:

var a, b, c: string; // объявляем списком три переменные строкового типа begin a := 'abc'; // строковый литерал из 3 символов b := a; // теперь b равно 'abc' (хранит в себе строку 'abc') с := b; // теперь c равно 'abc' end.

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

Конкатенация -- сложение строк

Пожалуй, самой распространённой операцией в Паскале является конкатенация строк. Эта операция состоит в том, что из двух "суммируемых" строк получается одна.
Рассмотрим пример:

var a,b,c : string; begin a := 'SPO '; b := 'VSU'; c := a + b; // конкатенация строк writeln(c); // смотрим чему равно c readln(); end.

-- запустите этот код. В консоли в качестве значения переменной $c$ мы получим строку:

SPO VSU

Таким образом: для конкатенации строк мы используем оператор суммы $+$.

c := a + b; // конкатенация строк
a + b

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

Сравнение строк

Как и переменные всех простых типов (есть ещё т.н. сложные типы, о которых мы будем говорить в следующих уроках) строки можно сравнивать, для чего используются, в частности операторы $\lt>$ и $=$.

Далее рассмотрим примеры небольших программ, работающих со строками, в т.ч. их сравнивающие.

Разбор примеров

Пример №1 -- считывание строк

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

var s:string; begin writeln('vvedite stroku:'); // выводим пояснение для пользователя readln(s); // считываем строку s := s + s; // сложение строк writeln('Poluchaem: ', s); readln(); end.

Пример №2 -- считывание строки и её сложение с литералом

Пользователь вводит произвольную строку. Cчитайте её, сложите со строкой '123' и выведите на экран.

var s:string; begin writeln('vvedite stroku:'); // выводим пояснение для пользователя readln(s); // считываем строку writeln('Poluchaem: ', s + '123'); // подставляем выражение как второй аргумент процедуры вывода readln(); end.

-- в данном решении мы не записывали значение литерала в переменную, хотя могли бы, например:

var s, b:string; // объявим две переменные begin writeln('vvedite stroku:'); // выводим пояснение для пользователя readln(s); // считываем строку b := '123'; writeln('Poluchaem: ', s + b); // подставляем выражение как второй аргумент процедуры вывода readln(); end.

Также мы могли бы объявить отдельную переменную для хранения результата, записать в неё результат конкатенации и затем вывести её значение:

var s, b, e :string; // объявим три переменные строкового типа begin writeln('vvedite stroku:'); // выводим пояснение для пользователя readln(s); // считываем строку b := '123'; e := s + b; writeln('Poluchaem: ', e); // подставляем переменную в качестве второго аргумента процедуры readln(); end.

Пример №3 -- считывание двух строк и их сложение с записью в переменную

Получите от пользователя две произвольных строки, сложите их, запишите результат конкатенации в переменную и выведите результат на экран.

var s1, s2 :string; begin writeln('Vvedite pervuy stroku:'); readln(s1); writeln('Vvedite vtoruy stroku:'); readln(s2); s1 := s1 + s2; // сложение строк, запишем в первую переменную, чтобы не объявлять третью write('Poluchaem: ', s1); readln(); end.

Пример №4

Получите от пользователя три строковых значения, выведете на экран результат проверки условия:
""первое значение равно второму или первое НЕ равно третьему""

Используя логическую операцию OR, и оператор сравнения $=$, можем решить так:

program Project1; var a, b, c: string; // секция объявления переменных begin // начало тела программы //получим значения переменных от пользователя writeln('vvedite pervuy stroku: '); readln(a); writeln('vvedite vtoruy stroku: '); readln(b); writeln('vvedite tretiy stroku: '); readln(c); writeln('otvet:', (a = b) OR (a <> c)); readln(); // удерживаем консоль end.

Видео-пояснения

Для этого урока есть следующие видео:

Самостоятельная работа

Вопросы

  1. Что такое оператор?
  2. Что такое конкатенация строк? Какой оператор используется для конкатенации?

Ввод-вывод, оператор присваивания, арифметические операции

Язык программирования Паскаль. Знакомство со средой программирования Турбо Паскаль. Основные понятия. Первая программа

Паскаль - язык профессионального программирования, который назван в честь французского математика и философа Блеза Паскаля (1623-1662) и разработан в 1968-1971 гг. Никлаусом Виртом. Первоначально был разработан для обучения, но вскоре стал использоваться для разработки программных средств в профессиональном программировании.

Паскаль популярен среди программистов по следующим причинам:

  1. Прост для обучения.
  2. Отражает фундаментальные идеи алгоритмов в легко воспринимаемой форме, что предоставляет программисту средства, помогающие проектировать программы.
  3. Позволяет четко реализовать идеи структурного программирования и структурной организации данных.
  4. Использование простых и гибких структур управления: ветвлений, циклов.
  5. Надежность разрабатываемых программ.

Турбо Паскаль - это система программирования, созданная для повышения качества и скорости разработки программ (80-е гг.). Слово Турбо в названии системы программирования - это отражение торговой марки фирмы-разработчика Borland International (США).

Систему программирования Турбо Паскаль называют интегрированной (integration - объединение отдельных элементов в единое целое) средой программирования, т.к. она включает в себя редактор, компилятор, отладчик, имеет сервисные возможности.

Основные файлы Турбо Паскаля:

Turbo.exe - исполняемый файл интегрированной среды программирования;

Turbo.hlp - файл, содержащий данные для помощи;

Turbo.tp - файл конфигурации системы;

Turbo.tpl - библиотека стандартных модулей, в которых содержатся встроенные процедуры и функции (SYSTEM, CRT, DOS, PRINTER, GRAPH, TURBO3, GRAPH3).

Запуск интегрированной среды программирования

Для запуска интегрированной среды программирования нужно установить текущим каталог с Турбо Паскалем (TP7\BIN) и ввести команду: turbo.exe.

Задание. Запустите среду программирования и рассмотрите экран. Перед вами полоса меню, область окна и строка статуса. Нажмите клавишу F10 - теперь вам доступны все опции меню. Используя клавиши управления курсором, рассмотрите меню. С командами меню мы будем знакомиться постепенно. Нажмите клавишу Esc (вы вышли из меню). Перемещая курсор в окне, следите за строкой статуса. Какая информация отражается в этой строке?

Почти все, что вы видите и делаете в среде Турбо Паскаль, происходит в окнах.

Окно - это область экрана, которую можно перемещать, изменять в размере, перекрывать, закрывать и открывать.

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

Активное окно – это окно, с которым вы в настоящий момент работаете.

Общие горячие клавиши:

F2 - сохраняет файл активного окна;

F3 - появление диалогового окна и возможность открыть файл;

F4 - запускает программу до строки, на которой стоит курсор;

F5 - масштабирует диалоговое окно;

F6 - переходит к следующему открытому окну;

F7 - запускает программу в режиме отладки с заходом внутрь процедур;

F8 - запускает программу в режиме отладки, минуя вызов процедур;

F9 - компилирование программы в текущем окне;

F10 - возвращение в меню.

Мы начнем изучение меню с наиболее важных и необходимых режимов.

Как войти в меню? Всего есть три возможности:

С помощью клавиш управления курсором подсветите слово FILE и нажмите клавишу "Enter". Что вы видите?

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

Open-F3 - открыть существующий файл (при активизации этой опции появляется окно со списком файлов, где можно выбрать необходимый),

New - создать новый файл (очищает память редактора и переводит в режим создания нового файла, которому присваивается имя Noname.pas; имя можно изменить при записи файла на диск),

Save-F2 - сохранить файл (переписывает файл из памяти редактора на диск),

Save as - сохранить с новым именем,

Save all - сохранить все в окнах (записывает содержимое всех окон редактора в соответствующие файлы),

Change dir - смена каталога (позволяет изменить установленный по умолчанию диск или каталог),

Print - печать файла,

Get info - выдача информации о текущем состоянии программы и используемой памяти,

DOS Shell - выход в DOS без выгрузки из памяти (для возврата ввести команду exit),

Exit - выход и выгрузка из памяти.

Программы на языке Паскаль имеют блочную структуру:

1. Блок типа PROGRAM - имеет имя, состоящее только из латинских букв и цифр. Его присутствие не обязательно, но рекомендуется записывать для быстрого распознавания нужной программы среди других листингов.

2. Программный блок, состоящий в общем случае из 7 разделов:

    раздел описания модулей (uses);

Общая структура программы на языке Паскаль следующая:

Начнем знакомство с Паскалем с программы, которая складывает два числа и выводит сумму на экран.

Откройте файл, в который Вы запишите эту программу. Для этого нажмите клавишу F10, чтобы выйти в главное меню, затем клавишами перемещения курсора выберите опцию File, а в выпавшем меню команду New.

Примечание. Обратите внимание на оформление текста программы.

    Найдите в этой программе заголовок, раздел описания переменных, признак начала программы, признак конца программы, тело программы, комментарий.

А теперь подведем итог вашим размышлениям.

Имя этой программы Summa2. Заметим, что требования к имени выполняются: оно отражает содержание программы, а также не содержит недопустимых символов.

Далее идет специально выделенный комментарий, в котором вы должны записать подробно условие задачи и указать, кто написал эту программу и когда.

Из разделов описаний имеется лишь один - раздел переменных. Он начинается со служебного слова Var. Мы описали три переменные: number1, number2, result. Все они переменные целого типа. Поэтому мы перечислили их через запятую, поставили двоеточие и указали тип переменных. Подобные объявления разделяются между собой точкой с запятой.

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

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *