02 Программирование на ЭВМ - общие понятия.pptx
- Количество слайдов: 66
Программирование на ЭВМ Лекция 2. Основные элементы языка Pascal Доцент, к. т. н. Исаев А. В. avisz@yandex. ru Ауд. 7 или 234
Язык программирования Pascal • Ядром языка Delphi является язык Pascal, созданный в 1960 х годах в учебных целях.
Lazarus Официальный сайт: http: //lazarus. freepascal. org/ Документация: http: //wiki. lazarus. freepascal. org/
Алфавит языка Pascal В алфавит языка Pascal входят четыре группы символов. Первые три из них составляют стандарт языка: 1. Буквы латинского алфавита A…Z, a…z (разница между большими и строчными есть только в строковых и символьных переменных); 2. Арабские цифры 0… 9; 3. Специальные символы. , : ; ( ) [ ] { } * + / _ ^ ' = < > # $ & @ % 4. Нестандартная группа — символы национальных алфавитов (русский, греческий, арабский…)
Элементы программы на языке Pascal Из символов алфавита языка Pascal образуются слова, обозначающие следующие элементы программы: 1. Ключевые слова; 2. Идентификаторы, которыми обозначаются: 2. 1 Типы данных; 2. 2 Константы; 2. 3 Переменные; 2. 4 Имена подпрограмм; …. 3. Комментарии; 4. Другие…
Ключевые слова • Ключевые слова (служебные, зарезервированные слова) указывают программе на необходимость выполнения определенных действий. • Могут использоваться ТОЛЬКО для этих целей. • Существует несколько десятков ключевых слов (program, begin, end, if, then, else, for, to и т. д. ). При наборе программистом текста программы ключевые слова выделяются полужирным шрифтом.
Идентификаторы • Идентификаторы — произвольные слова (последовательность символов), которыми можно обозначить другой элемент программы, кроме зарезервированного слова, идентификатора или комментария. • По сути, идентификаторы — это имена других элементов программы. • Идентификаторы могут состоять из латинских букв, арабских цифр и знака подчеркивания. • Первым символом идентификатора обязательно должна быть буква.
Идентификаторы в языке Pascal • Корректные идентификаторы: b y 1 Z_start My_Program • Некорректные идентификаторы: 1 x *@$& Диаметр_1
Типы данных • Любые данные (константы, переменные, свойства объектов, значения функций, выражения) характеризуются своими типами. • Тип данных определяет множество допустимых значений, которые может иметь соответствующий элемент программы (переменная, функция и т. д. ), а также множество допустимых операций, применимых к нему. Кроме того, тип определяет объем памяти, отводимой под эту переменную; способ представления величин в памяти компьютера. • Типы данные описываются в секции type раздела описаний (см. далее в разделе «Структура программы на Pascal» ). • Помимо использования стандартных типов данных, можно создавать собственные типы данных.
Типы данных • Порядковые (целочисленные) типы: integer, byte и т. д. ; • Вещественные (с плавающей точкой) типы: real, extended и т. д. ; • Логический тип: boolean • Символьные типы: char и т. д. ; • Строки: string • Структурированные: array, record и т. д.
Константы • Константы — неизменяемые, постоянные величины. Могут представлять собой целые, вещественные и шестнадцатеричные числа, логические константы, символы, строки символов и др. • Целые числа записываются со знаком (+ или –) или без него. • Вещественные числа — со знаком или без него с использованием десятичной точки (НЕ запятая!!!) и/или экспоненциальной части. Символ e или E означает десятичный порядок и имеет смысл "умножить на 10 в степени". Например: 3. 14 E 5 означает 314000; 25 e 2 означает 0. 25. • Логическая константа: слово true или false. • Символьная константа: любой символ ПК, заключенный в апострофы. Если нужно записать сам знак апострофа, то он удваивается: ''. Можно записывать символы с указанием его внутреннего кода, при этом перед кодом ставится символ # Например: #13 (знак перевода строки)
Переменные • Переменная — именованная ячейка памяти, имя которой можно использовать для осуществления доступа к данным, находящимся по данному адресу. • Значение переменной может меняться в ходе выполнения программы.
Подпрограммы • Подпрограммы — специальным образом оформленные фрагменты программы, в значительной степени независимые от остального текста программы. • Подпрограммы — мощное средство структурирования программ. Это значит, что программу можно разбивать на множество во многом независимых фрагментов, поручая каждому из этих фрагментов (т. е. , каждой подпрограмме) конкретную задачу, что сильно облегчает работу. • Существует два вида подпрограмм — процедуры и функции. Единственное их отличие — функции может быть присвоено значение, а ее идентификатор можно использовать вместе с переменными и константами в выражениях.
Комментарии • Служат пояснениями для программиста. Обозначаются символами { } или (* *) (многострочные, т. е. всё, что заключено между этими символами, воспринимается системой программирования как комментарий), а также // (однострочный) • Примеры: / / это однострочный комментарий {а это, как можно видеть, многострочный}
Хороший тон программиста — Комментировать любое свое действие (как бы лениво это ни было)
Структура программы на Pascal Имя программы Заголовок (обязательная часть) Program список используемых библиотек (модулей) список меток в основном блоке программы; label … определение констант; const … описание типов; type … определение глобальных переменных; var … определение процедур; procedure … определение функций Раздел описаний uses … function … Тело программы Операторы (обязательная часть). begin … end.
Структура подпрограмм • Подпрограммы (процедуры и функции) имеют аналогичную структуру, включающую в себя заголовок, раздел описаний, тело подпрограммы. • Единственное отличие – в заголовке подпрограммы вместо слова program пишется, соответственно, procedure или function
Правило • В любом месте программы можно использовать лишь те элементы, которые были объявлены ранее в разделе описаний.
Синтаксис языка программирования • Синтаксис языка программирования — набор правил, описывающий комбинации символов алфавита, считающиеся правильно структурированной программой (документом) или её фрагментом. Аналогия — синтаксис человеческого языка, определяющий строение связной речи. • Синтаксису языка противопоставляется его семантика. Синтаксис языка описывает «чистый» язык, в то же время семантика приписывает значения (действия) различным синтаксическим конструкциям. • Пример синтаксически правильной, но семантически неверной записи: X: =125/0; Y: = 12. 5 div 5; Семантически неверно!!!
Основные правила синтаксиса • Общие правила записи ключевых слов и идентификаторов должны беспрекословно соблюдаться! • Все строки программы заканчиваются символом ; (точка с запятой). • После зарезервированных слов символ ; никогда не ставится, за исключением слова end. • После последнего end программы стоит символ. (точка). • Каждому begin (начало) должно соответствовать свой end (конец).
Выражения • Выражения в программе могут состоять из строк, символов, переменных, констант или обращений к функциям, соединенных знаками операций и скобками. • В общем случае выражение состоит из нескольких элементов (операндов) и знаков операций. Например: x+y здесь операнды: x и y знак операции: + • Выражения могут состоять из одиночного элемента. Например: x — тоже выражение.
Приоритет операций в выражениях • При вычислении значений выражений следует учитывать, что операторы имеют разный приоритет. • Приоритет операторов влияет на порядок выполнения операций. При вычислении значения выражения в первую очередь выполняются операторы с более высоким приоритетом. Так у операторов *, /, DIV, MOD более высокий приоритет, чем у операторов + и –. Если приоритет операторов в выражении одинаковый, то сначала выполняется тот оператор, который находится левее. • Для задания нужного порядка выполнения операций в выражении можно использовать скобки, например: • (r 1+r 2+r 3)/(r 1*r 2*r 3) • Выражение, заключенное в скобки, трактуется как один операнд. Это означает, что операции над операндами в скобках будут выполняться в обычном порядке, но раньше, чем операции над операндами, находящимися за скобками. • При записи выражений, содержащих скобки, должна соблюдаться парность скобок, т. е. число открывающих скобок должно быть равно числу закрывающих скобок. Нарушение парности скобок — наиболее распространенная ошибка при записи выражений
Порядок вычислений в выражениях (приоритет операций) • В первую очередь вычисляются выражения, стоящие в круглых скобках, затем в порядке убывания значимости (приоритета): 1. 2. 3. 4. логические операторы; умножение/деление; сложение/вычитание; операторы сравнения
Приоритет операций 1. Логический оператор NOT стоящий перед скобками имеет наивысший приоритет!); 2. Скобки; 3. логические операторы (AND, OR, NOT, XOR) операции умножения и деления (* и /); 4. операции сложения и вычитания; 5. операции сравнения (< > <> <= >=).
Оператор присваивания в языке Pascal • В общем виде оператор присваивания записывается так: переменная : = выражение; Например: a: =5; b: =b+2; x: =y+15; z: =(10+q*p)/n; • Оператор присваивания выполняется следующим образом. Вычисляется значение выражения в правой части присваивания. После этого переменная, указанная в левой части, получает вычисленное значение. При этом тип выражения должен быть совместим по присваиванию с типом переменной! • Как отмечалось ранее, тип выражения определяется типом операндов, входящих в него, и зависит от операций, выполняемых над ними.
Логические операции • Отрицание (логическое НЕ, на Паскале — оператор not). В алгоритмах может записываться как . Например, запись означает «не a» и на a Паскале записывается как not a. Это унарная операция, то есть производимая над одним операндом. Остальные логические операции бинарные (над двумя операндами); • Конъюнкция (логическое умножение, логическое И, оператор and). Может записываться как или. (знак обычного умножения). Например: a b (или, что то же самое, a. b) означает «а и b» ). На Паскале — a and b. • Дизъюнкция (логическое сложение, включающее ИЛИ (либо просто ИЛИ), оператор or), В алгоритме записывается как или + (как обычное сложение). Например, a+b означает «а или b» , на Паскале — a or b. • Сложение по модулю 2 (исключающее ИЛИ, «либо…» , оператор xor), чаще всего обозначается знаком. Например, a b означает «либо а, либо b» , на Паскале записывается как a xor b.
Таблица истинности • Логические операции наглядно представляются таблицами истинности. Таблицы истинности отображают принцип действия логической операции, принимая, что действия производятся над двоичными операндами (0 или 1, т. е. «ложь» и «истина» , соответственно).
Таблицы истинности для основных логических операций a b a AND b 0 0 0 1 0 1 1 1 a b a OR b a XOR b 0 1 0 0 1 1 1 0 1 0 0 1 1 0
• Все эти операции могут применяться в выражениях как логических, так и арифметических. В любом случае операция производится побитово, т. е. для каждого знака операндов попарно. Например, если a=011010112 b=001100102 то a or b будет равно 011110112.
Тип выражения • Тип выражения определяется типом операндов, входящих в него, и зависит от операций, выполняемых над ними.
Тип выражения • Для операций сложения (+), вычитания (—) и умножения (*): Операнд 1 Операнд 2 Результат Integer Real Integer Real • Для операции деления (/): Операнд 1 Операнд 2 Результат Integer Real Real
Операции деления для целочисленных типов • При выполнении целочисленного деления (операция div) остаток от деления отбрасывается. Например, 15 div 3 5; 18 div 5 3; 7 div 10 0. • С помощью операции mod можно найти остаток от деления одного целого числа на другое. Например, 15 mod 3 0; 18 mod 5 3; 7 mod 10 7.
Примеры выражений Переменные и их тип Выражение Результат x, y, z: integer; x: =3; y: =10; z: =x/y Ошибка (операция деления / не определена для порядкового типа данных) x, y: real; x: =3; y: =10; z: =x/y 3. 3333…. a, b, c: integer; a: =10; b: =3; c: =a div b 3 a: =10; b: =3; c: =a mod b 1 a, b, c: integer; a, b: integer; c: real; a: =10; b: =3; c: =a/b //или c: =a div b // или c: =a mod b Ошибка: несовпадение типов в левой и правой части выражения
• Характеристики основных типов данных Pascal: названия, объем занимаемой ими памяти, множества допустимых значений и множества допустимых операций над ними + - * div mod < > >= <= = <> +-*/ < > >= <= = <>
Операторы языка • Оператор — конкретная инструкция, выполняемая компьютером. • Составной оператор — последовательность произвольных команд программы, заключенная в т. н. «операторные скобки» — слова begin и end. Это — важное средство структурного программирования. В составного оператора могут входить и другие составные операторы — глубина вложенности любая. • Все, что написано между begin и end, фактически, является одним составным оператором.
Условный оператор • Условный оператор позволяет проверить некоторое условие и в зависимости от результатов проверки выполнить то или иное действие. Условный оператор — один из способов ветвления вычислительного процесса. нет Условие да
Структура условного оператора if <условие> then <оператор1> else <оператор2>; • Здесь <условие> — выражение логического типа; <оператор1> и <оператор2> — любые операторы языка, в том числе составные. • Вначале вычисляется условное выражение <условие>. Если результат есть True (истина), то выполняется <оператор1>, а <оператор2> пропускается; если же результат есть False (ложь) — то наоборот, <оператор1> пропускается, а <оператор2> выполняется. • Часть Else может быть опущена.
Еще раз: разница между : = и = : = — это оператор присваивания значения какой либо переменной: x: =5; = — это оператор сравнения двух величин, используется в логических конструкциях: if x=5 then y: =y+x;
Базовые функции текстового ввода/вывода • Write(x); и writeln(x); — команды вывода на экран. Если нужно вывести какой то текст, то он записывается в знаках апострофа writeln(’вот как то так’); если же выводится значение какой либо переменной, то просто указывается имя этой переменной: writeln(a); • read(x); и readln(x); — команды ввода с клавиатуры. Смысл заключается в том, что при выполнении программы после ввода с клавиатуры каких либо данных и нажатия на клавишу Enter, происходит присваивание того, что было введено, переменной, указанной в скобках (здесь — x). • Окончание …ln — от слова line (строка). При использовании операторов writeln и readln вывод или ввод данных, соответственно, осуществляется с новой строки.
Еще немного о текстовом вводе и выводе данных Ввод данных с клавиатуры выполняется операторами: Read(<список переменных>); Readln(<список переменных>); где <список переменных> — последовательность имен переменных, разделенных запятыми. • Буквы ln добавляются в конце оператора для того, чтобы курсор автоматически переходил на следующую строку при выводе на экран текстов или результатов выполнения программы. • Например: Readln(x, y, z); Read(beta, gamma); • При выполнении оператора read (readln) программа останавливается и ждет, пока нужное количество чисел не будет введено с клавиатуры. Вводимые числа разделяют пробелами или нажатием клавиши Enter. • По завершении ввода данных следует нажать Enter, после чего компьютер перейдет к выполнению следующего оператора программы. •
Еще немного о текстовом вводе и выводе данных • • Вывод данных на экран выполняется операторами: Write(<список выражений>); Writeln(<список выражений>); Выражения в списке разделяются запятыми. Значения выражений сначала вычисляются, а затем выводятся на экран. Буквы ln имеют то же значение, что и в операторе readln. • Вслед за выражением через двоеточие можно указать ширину поля экрана, в котором разместится выводимое значение. • При выводе вещественных значений можно указать, сколько десятичных цифр следует сохранить в дробной части числа, причем количество цифр указывается вслед за шириной поля после двоеточия. Например: write(pi: 6: 2) займет для вывода числа пи (pi — стандартная константа языка Pascal), шесть позиций, две из которых будут использованы для дробной части х (т. е. на экран будет выведено 3, 14). • •
Некоторые стандартные функции языка Pascal • • • odd(x); — проверка нечетности числа. Если х нечетное, то значение этой функции — истина, в противном случае — ложь. Если нам, например, требуется узнать, чётное ли некоторое число a и, если да, вывести соответствующее сообщение, то мы можем записать: if not odd(a) then writeln(’Число ’, a, ’ – четное’); chr(x); — возвращает символ по его коду (например, write(сhr(65)); выведет латинскую заглавную букву A). trunc(x); — отбрасывает дробную часть от числа х; round(x); — округляет число х до ближайшего целого; abs(x); — вычисляет модуль (абсолютное значение) числа х; inc(x); — увеличивает х на единицу. Если в скобках указать второй параметр, например, inc(x, a); то х увеличится на величину а. dec(х) и dec(x, b); — уменьшает х, аналогично предыдущей команде (на единицу, если второй параметр не указан, или на величину b). randomize; — включает генератор случайных чисел. Это необходимо делать всякий раз перед тем, как начинать работу со случайными числами. Лучше всего писать эту команду в самом начале программы, после первого слова begin. random(m); — вычисляет случайное целое число в диапазоне от 0 до m– 1. Например, если написать a: =random(101); то переменной а присвоится случайное значение в диапазоне от 0 до 100.
Некоторые стандартные функции языка Pascal • • • sqr(x); — возводит в квадрат число х; sqrt(x) — извлекает квадратный корень из числа х; exp(x); — ex; pi; — число π; В стандартном языке Pascal отсутствуют операторы для возведения числа в степень (кроме команд sqr и sqrt). Это можно обойти, воспользовавшись свойством натурального логарифма: • То есть на Паскале мы можем для вычисления выражения x=ab записать: x: =exp(b*ln(a));
Циклы • Цикл — многократно исполняемая последовательность инструкций (команд); • Три разновидности цикла в Pascal: 1. С предусловием; 2. С постусловием; 3. С счетчиком
Цикл с предусловием • • Работа этого цикла заключается в следующем: Сначала проверяется некоторое условие. Если результат проверки — истина, то выполняются операторы (один или несколько), которые составляют т. н. тело цикла. Затем снова проверяется условие, и так происходит до тех пор, пока условие не станет ложным (а оно может не стать таким никогда, т. е. мы будем иметь бесконечный цикл). С другой стороны, если условие изначально ложно, то тело цикла не выполнится вообще ни разу, и программа станет выполнять операторы, которые стоят по тексту далее — после цикла. — Условие + Тело цикла
Цикл с предусловием WHILE <условие> DO <оператор>; • While, do — ключевые слова ( «пока [выполняется условие], делать…» ); <условие> — выражение логического типа; <оператор> — произвольный оператор (одинарный или составной), который является телом цикла. • Если выражение <условие> имеет значение true, то выполняется <оператор>, после чего вычисление выражения <условие> и его проверка повторяются. Если <условие> имеет значение false, оператор while прекращает свою работу
Цикл с постусловием Тело цикла — Условие + • Условие стоит после тела цикла. • В отличие от цикла с предусловием, этот цикл выполнится хотя бы один раз (и только после этого будет проверено условие).
Цикл с постусловием REPEAT <оператор> UNTIL <условие>; • Repeat, until — ключевые слова ( «повторять [до тех пор], пока [не будет выполнено условие]» ); <оператор> представляет собой тело цикла, т. е. произвольную последовательность операторов. <условие> — выражение логического типа. • Цикл выполняется, пока <условие> является ложным. Как только оно станет истинным, цикл прекратит свое выполнение; • Конечно, здесь тоже возможен бесконечный цикл!
Цикл с параметром (счетчиком) i: =нач_знач — i<=кон_знач + Тело цикла i: =i+1; • Для работы с этим видом цикла необходимо сначала в разделе описания переменных var описать целочисленную переменную — параметр цикла (переменную счетчик) — на схеме она называется i.
Цикл с параметром (счетчиком) FOR <параметр_цикла>: =<нач_знач> TO <кон_знач> DO <оператор>; • <параметр_цикла> — переменная любого порядкового типа (напр. , целочисленного); • <нач_знач> — начальное значение (выражение того же типа); • <кон_знач> — конечное значение (выражение того же типа); • <оператор> — произвольный оператор (в т. ч. составной) При выполнении этого цикла вначале осуществляется присваивание <параметр_цикла>: =<нач_знач>. После этого циклически выполняется следующая последовательность действий: • Проверка условия <параметр_цикла> <= <нач_знач>. Если условие не выполнено, оператор FOR завершает свою работу. • Выполнение оператора <оператор> (тела цикла). • Наращивание переменной <параметр_цикла> на единицу.
Цикл с параметром (счетчиком) • Вместо ключевого слова TO может использоваться ключевое слово DOWNTO. • В этом случае выполняется проверка условия <параметр_цикла> >= <нач_знач> и происходит не наращивание, а убывание переменной <параметр_цикла> на единицу. В этом случае блок схема цикла выглядит следующим образом: i: =нач_знач — i>=кон_знач + Тело цикла i: =i 1;
Дополнительные возможности при работе с циклами • Для гибкого управления операторами цикла FOR, WHILE и REPEAT служат две стандартные команды: • BREAK — реализует немедленный выход из цикла; действие процедуры заключается в передаче управления оператору, стоящему сразу за концом цикла. • CONTINUE — обеспечивает досрочное завершение очередного прохода цикла; действие заключается в переходе в самый конец циклического оператора.
Примеры • Для сравнения операторов цикла while, repeat и for рассмотрим, как с их помощью реализуется один и тот же алгоритм вычисления суммы всех целых чисел от 1 до n (т. е. выражения вида ), причем n вводится пользователем с клавиатуры.
С помощью цикла с предусловием while Program primer_preduslovie; var i, n, summa: integer; begin writeln(’Введите n: ’); readln(n); summa: =0; i: =1; while i<=n do begin summa: =summa+i; i: =i+1; //эту же строку можно записать как inc(i); end; writeln(’Сумма чисел от 1 до ’, n, ’ равна ’, summa); end;
С помощью цикла с постусловием repeat Program primer_postuslovie; var i, n, summa: integer; begin writeln(’Введите n: ’); readln(n); summa: =0; i: =1; repeat summa: =summa+i; inc(i); until i>n; writeln(’Сумма чисел от 1 до ’, n, ’ равна ’, summa); end;
С помощью цикла с параметром for Program primer_for; var i, n, summa: integer; begin writeln(’Введите n: ’); readln(n); summa: =0; for i: =1 to n do summa: =summa+i; writeln(’Сумма чисел от 1 до ’, n, ’ равна ’, summa); end;
Оператор выбора x=a? + Действие 1 — x=b? + Действие 2 — . . . x=z? — Действие по умолчанию + Действие N • Оператор выбора предназначен для разветвления процесса на несколько направлений путем выбора одного из нескольких альтернативных путей выполнения программы.
Оператор выбора CASE <выражение> OF: <значение 1> : <оператор1> ; <значение 2> : <оператор2> ; … <значение. N> : <оператор. N> ; ELSE <оператор>; END; • • • Выполнение оператора выбора начинается с вычисления <выражения>. Затем выполняется оператор, помеченный константами, <значение> одной из которых совпало с результатом вычисления <выражения>. После этого выполняется выход из оператора. Если совпадения не произошло, выполняются операторы, расположенные после ключевого слова ELSE, а при его отсутствии управление передается оператору, следующему за блоком выбора CASE. Часть ELSE может быть опущена. <Выражение> после ключевого слова CASE должно быть порядкового типа, <значения> — того же типа, что и <выражение>. Чаще всего после CASE используется имя переменной (это частный случай выражения). Перед каждой ветвью оператора можно записать одну или несколько констант через запятую или операцию диапазона, обозначаемую двумя идущими подряд точками, например:
Примеры Program primer_case 01; var a: char; begin readln(a); case a of 'Y', 'y': writeln('Yes!'); 'N', 'n': writeln('No!'); else writeln('Maybe. . . '); end; readln; end. Program primer_case 02; var a: char; begin readln(a); case a of 4: writeln('4'); 5, 6: writeln('5 или 6'); 7. . . 12: writeln(‘от 7 до 12'): end; readln; end.
Другие типы данных
Символьные типы • Символьный тип сhar — простой тип данных, предназначенный для хранения одного символа (управляющего или печатного) в определённой кодировке. • Переменная этого типа занимает 1 байт и принимает одно из 256 значений кода ASCII (американский стандартный код для обмена информацией). Символы упорядочены в соответствии с их кодом, поэтому к данным символьного типа применимы операции отношения.
Работа с символьным типом • В программе вместо символа можно использовать его код, состоящий из # и номера кодируемого символа • Например: Writeln(#51); // выведет ЦИФРУ 3 • Обычно символы, имеющие экранное представление, записывают в явном виде, заключив в апострофы: • Например: If simvol='A' then writeln('*');
Операции над символами • Две стандартные функции позволяют поставить в соответствие данную последовательность символов множеству целых неотрицательных чисел (порядковым номерам символов последовательности). Эти функции называются функциями преобразования: ord(ch); // выдает номер символа (нумерация с нуля), chr(i); // выдает i ый символ из таблицы символов. • Пример • Writeln(ord(‘A‘)); // выдает номер символа А Writeln(chr(42)); //выдает 15 ый символ из стандартной кодировки (знак *) Кроме того, для символьных переменных применяются такие функции: pred(ch); //возвращает предыдущий символ; succ(ch); //возвращает следующий символ; upcase(ch); //преобразует строчную букву в заглавную. Обрабатывает буквы только латинского алфавита. • Также можно использовать процедуры inc и dec. •
Строковые типы • • Строка — это одномерный массив символов, количество элементов в котором может меняться в зависимости от типа. В языке Delphi существуют, в частности, следующие строковые типы: Короткая строка Shortstring или String[N], где N<=255 (статические строки); Длинная строка string или ansistring (динамические строки). Длина до 0 до 2 Гбайт. Заканчивающаяся нулем строка PChar. Примеры объявления строк: var str: string[250]; // короткая строка длиной до 250 символов str 1: shortstring; // короткая строка длиной до 255 символов str 2: string; // длинная строка chs: array [1. . 1000] of char; //массив из 1000 символов • Индексация (нумерация) символов в строке начинается с 1 (для типов коротких и длинных строк) или с 0 (для строк PChar).
Основные операции над строками • • • Текущую длину строки можно получить с помощью функции Length(str), где str — имя строковой переменной. Setlength(str, len); // устанавливает новую длину строки str равной len (в принципе, аналогично установке длины динамического массива). К строкам можно применять операцию сцепления (конкатенации): + New_string: =‘Hello’+’world!’; • • • Функция Copy(строка, номер_позиции, колво_позиций) из указанной строки извлекается кусок начиная с позиции номер_позиции длиной в колво_позиций. a: ='test string'; writeln(copy(a, 3, 5)); // выведет на экран 'st st' Функция Pos(подстрока, строка) возвращает первый номер позиции, начиная с которой подстрока встретилась в строке. Подстрока — непрерывная последовательность символов в строке. Если указанная подстрока в строке не встретилась, то возвращается 0. Для той же строки a: pos('s', a); //вернет 3 pos('str', a); //вернет 6
Спасибо за внимание!


