Реферат на тему символьные величины

Обновлено: 05.07.2024

Развивающая: развивать умения выделять главное в изученном материале, сравнивать, обобщать, логически излагать свои мысли; привить интерес к предмету информатики через прикладные программы.

Многие функции, которые встречаются в языке Бейсик, являются составной частью языка и называются стандартными функциями. Назовите некоторые из них (ABS(X), COS(X), SIN(X), SQR(X) и т. д.) Эти функции являются числовыми и обрабатывают числовые значения.

Для работы с введёнными нами новым типом – символьные величины – тоже есть свои функции. Они называются строковыми (символьными) функциями. Каждая такая функция имеет уникальное имя, по которому происходит обращение к ней. В зависимости от типа результата строковые функции делятся на функции обработки строк и функции преобразования типов данных. В функциях обработки строк и аргумент, и результат являются троками. Аргумент и результат функции преобразования типов данных, в отличие от аргумента и результата функции обработки строк, представляют собой данные разных типов.

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

Трудоёмкую работу по определению длины текста в Бейсике выполняет функция LEN(X$) ( от англ. Length – длина), которая находит длину символьной величины X$. Аргументом функции LEN должна быть символьная величина. Результатом является целое число, заключённое между 0 и 255.

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

Система случайных величин
Двумерная функция распределения вероятностей случайных величин. Понятие условной функции распределения и плотности распределения вероятностей. Корреля.

Бесконечно малые величины
Свойства бесконечно малых величин. Произведение бесконечно малой величины на ограниченную функцию. Предел функции f(x) при x, стремящимся к бесконечно.

Функция распределения и плотность вероятности системы двух случайных величин
Вероятность совместного выполнения двух неравенств в системе двух случайных величин. Свойства функции распределения. Определение плотности вероятности.

Производная сложной функции
Поиск производной сложной функции как равной производной функции по промежуточному аргументу, умноженной на его производную по независимой переменной.


Для работы с символами, словами и предложениями в Паскале существуют типы данных – CHAR И STRING, представляющие собой символы в кодировке Windows.

Тип CHAR ( символьный ) - значения занимают 1 байт и представляют собой 1 символ.

Тип STRING ( строковый ) – значением может быть любая последовательность символов длиной не более 255.

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

Имя : char ;

Имя : string ;

Имя : string [ длина ];

где Имя – имя переменной;

string, char – строковый или символьный тип;

длина – константа типа INTEGER, определяющая максимальную длину строки.

Примеры Объявления: var fio: string[30 ] ; //строковая переменная fio длиною 30 buff: string; //строковая переменная buff длиною до 255 символов а :char; //строковая переменная а длиною в 1 символ const name=‘Иванов Петр’; s=‘ b’; Если при объявлении строковой переменной длина не указывается, то она может быть до 255 символов. К символам в строке можно обращаться, используя индекс: stroka [5] обозначает 5-тый символ в строке.

fio: string[30 ] ; //строковая переменная fio длиною 30

buff: string; //строковая переменная buff длиною до 255 символов

а :char; //строковая переменная а длиною в 1 символ

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

К символам в строке можно обращаться, используя индекс: stroka [5] обозначает 5-тый символ в строке.

Сравнение символьных величин Последовательность символов, являющаяся строкой, заключается в одинарные кавычки. Строковую переменную можно сравнить с другой переменной или константой типа STRING, используя операторы =, , =,. Строки сравниваются посимвольно от первого символа. 1. Если все символы сравниваемых строк одинаковые, то такие строки считаются равными. ’ abcd’ = ‘abcd’

Сравнение символьных величин

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

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

Строки сравниваются посимвольно от первого символа.

1. Если все символы сравниваемых строк одинаковые, то такие строки считаются равными.


‘abc’ 3. Если строки имеют различную длину, но в общей части символы совпадают, то короткая строка меньше, чем длинная. ’ abcd’ ‘abc’ " width="640"

СРАВНЕНИЕ СИМВОЛЬНЫХ ВЕЛИЧИН

2. Если в одинаковых позициях строк находятся разные символы, большей считается та строка, у которой в этой позиции находится символ с большим кодом.

3. Если строки имеют различную длину, но в общей части символы совпадают, то короткая строка меньше, чем длинная.

Сложение переменных Объединение нескольких строк в одну: к концу первой строки присоединяется начало второй и т. д. Длина результирующей строки должна бытьПример: c:= ‘Иван‘ + ‘ ‘ + ‘Петров’; write(c); //будет выведено ‘Иван Петров’

Сложение переменных

Объединение нескольких строк в одну: к концу первой строки присоединяется начало второй и т. д.

Длина результирующей строки должна быть

c:= ‘Иван‘ + ‘ ‘ + ‘Петров’;

write(c); //будет выведено ‘Иван Петров’

Строковые функции Функция LENGTH Возвращает длину строки. Length (параметр) Параметр – переменная или константа строкового типа. Возвращаемое значение (целое число) – количество символов, из которых состоит строка. Пример , n:=length (‘Иванов’); - значение переменной n равно 6.

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

Функция LENGTH

Возвращает длину строки.

Length (параметр)

Параметр – переменная или константа строкового типа. Возвращаемое значение (целое число) – количество символов, из которых состоит строка.

n:=length (‘Иванов’); - значение переменной n равно 6.

1. Ввести строку символов. Определить и вывести на печать ее длину. Напечатать первый и последний символы строки.

2. Ввести две фамилии. Определить какая фамилия имеет большую длину. Результат вывести в виде:

ФУНКЦИЯ CONCAT Concat(s1. sn) возвращает строку, являющуюся результатом слияния строк s1. sn. Результат тот же, что у выражения s1+s2+. +sn. Пример S1 := ’город ’; S2 :=‘Киев’; S :=CONCAT ( S1 , S2) ; S3 := S1+S2 ; значением переменных S и S3 будет ’город Киев’.

ФУНКЦИЯ CONCAT

Concat(s1. sn)

возвращает строку, являющуюся результатом слияния строк s1. sn.

Результат тот же, что у выражения s1+s2+. +sn.

S1 := ’город ’; S2 :=‘Киев’;

S :=CONCAT ( S1 , S2) ;

значением переменных S и S3 будет ’город Киев’.

Задания Решить задачу 4 с использованием функции Concat Описать строковую константу k=‘Кабинет’ и строковую переменную pred. Ввести с клавиатуры название предмета (в нужном падеже). Получить в переменной res полное название кабинета. Объявить константу slovo1=

Решить задачу 4 с использованием функции Concat

Описать строковую константу k=‘Кабинет’ и строковую переменную pred. Ввести с клавиатуры название предмета (в нужном падеже). Получить в переменной res полное название кабинета.

Объявить константу slovo1='волна'. Сравнить ее с переменной slovo2, присваивая ей значения: 'волга', 'вол', 'ворон‘ .

Функция POS Позволяет определить положение подстроки в строке. Если подстрока не найдена возвращается 0. Общий вид: Pos ( Подстрока , Строка ); где Подстрока – строковая константа или переменная, которую надо найти в строковой константе или переменной Строка. Пример p := pos (‘Петербург’ , ’Санкт-Петербург’); Значение переменной p будет равно 7.

Функция POS

Позволяет определить положение подстроки в строке. Если подстрока не найдена возвращается 0. Общий вид:

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

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

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

Значение переменной p будет равно 7.

Функция COPY Позволяет выделить фрагмент строки. Общий вид: Copy ( Строка , p , n ); где Строка – переменная строкового типа, содержащая строку, фрагмент которой надо получить; р – номер символа, с которого начинается выделяемая подстрока; n – длина выделяемой подстроки. Пример St := ’инженер Иванов’; Fam := copy (st,9,6); значением переменной fam будет строка ‘Иванов’.

Функция COPY

Позволяет выделить фрагмент строки. Общий вид:

Copy ( Строка , p , n );

где Строка – переменная строкового типа, содержащая строку, фрагмент которой надо получить;

р – номер символа, с которого начинается выделяемая подстрока;

n – длина выделяемой подстроки.

St := ’инженер Иванов’;

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

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

Функция Ord Возвращает символ с кодом Х. Общий вид:Ord(x) Пример m:=ord(8); m1:=ord(‘8’); Writeln(m,

Функция Ord

Возвращает символ с кодом Х. Общий вид:Ord(x)

Функция Chr

Для символов х - char возвращает их код.

Для целых x возвращает само значение.

Строковые процедуры Процедура Delete Позволяет удалить часть строки. Общий вид: DELETE ( Строка , p , n ); где Строка – переменная строкового типа; р – номер символа, с которого начинается удаляемая подстрока; n – длина удаляемой подстроки. Пример S :=’город Санкт-Петербург’; delete ( S ,7,6); значением переменной S будет строка ’город Петербург’.

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

Процедура Delete

Позволяет удалить часть строки. Общий вид:

DELETE ( Строка , p , n );

где Строка – переменная строкового типа;

р номер символа, с которого начинается удаляемая подстрока;

n – длина удаляемой подстроки.

S :=’город Санкт-Петербург’;

delete ( S ,7,6);

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

Процедура INSERT Позволяет вставить подстроку в строку символов. Cтрока раздвигается. В общем виде обращение к процедуре выглядит так: Insert (subs, s, index) ; вставляет подстроку subs в строку s с позиции index . Пример S := ’город Петербург’; INSERT (‘Санкт-‘, S ,7); значением переменной S будет строка ’город Санкт-Петербург’.

Процедура INSERT

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

Insert (subs, s, index) ;

вставляет подстроку subs в строку s с позиции index .

S := ’город Петербург’;

INSERT (‘Санкт-‘, S ,7);

значением переменной S будет строка ’город Санкт-Петербург’.

Процедура VAL Преобразует строку S к числовому представлению и записывает результат в переменную V . Val(S, V, CODE) где S – строковая константа или переменная, содержащая изображение числа; V – переменная, которой должно быть присвоено значение числа, изображенного в строке; CODE – возвращаемый процедурой код ошибки. Если строка может быть преобразована в число, то код ошибки равен нулю. Пример S:=’1234’; VAL(S, X, A); значение переменной X будет равно 1234, а переменной А - ноль.

Процедура VAL

Преобразует строку S к числовому представлению и записывает результат в переменную V .

Val(S, V, CODE)

где S – строковая константа или переменная, содержащая изображение числа;

V – переменная, которой должно быть присвоено значение числа, изображенного в строке;

CODE – возвращаемый процедурой код ошибки. Если строка может быть преобразована в число, то код ошибки равен нулю.

значение переменной X будет равно 1234, а переменной А - ноль.

Процедура STR Преобразует число в строку. Str ( N , S ) ; где N– переменная, которая должна быть преобразована в строку; S – строковая переменная. Пример В результате выполнения строк программы: X:=1234; str (X,S); значением переменной S будет строка ‘1234’.

Процедура STR

Преобразует число в строку.

Str ( N , S ) ;

где N– переменная, которая должна быть преобразована в строку;

S – строковая переменная.

В результате выполнения строк программы:

значением переменной S будет строка ‘1234’.

Цикл с символьной переменной Переменная - параметр цикла может иметь любой порядковый тип ( целый, символьный, перечисляемый или интервальный). При этом типы начального и конечного значения должны соответствовать типу параметра цикла. Пример program prim; var i:integer; en : (red, green, blue, white); <перечисляемый тип></p>
<p> c : char; a: 0..10; a: ‘c..z’; begin for en:=red to blue do write(Ord(en):2); for c:=

Цикл с символьной переменной

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

var i:integer; en : (red, green, blue, white);

for en:=red to blue do write(Ord(en):2);

for c:='a' to 'z' do write(c);

for i :=0 to 10 do begin a:=i; write(a); end;


-75%

Символьный тип данных как составляющая языка программирования: управляющие символы, лексемы и разделители. Разработка программного обеспечения для практической реализации решения задач, содержащих символьные величины языка программирования Turbo Pascal.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 03.05.2012
Размер файла 37,7 K

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

Федеральное агентство по образованию РФ

Государственное образовательное учреждение высшего профессионального образования

Тюменский Государственный Нефтегазовый Институт

Филиал “Тобольский Индустриальный Институт”

Кафедра Математики и Информатики

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

к курсовой работе по дисциплине “Информатика”

студент группы МХП-08 И.Б.Патрушев

доцент каф. МИ Н.И.Герчес

АННОТАЦИЯ

Пояснительная записка к данной курсовой работе состоит из 19 страниц. В тексте пояснительной записки содержится 4 таблицы, 3 блок-схемы. Курсовая работа посвящена символьному типу данных языка программирования Turbo Pascal. Программа реализована на языке программирования. Разработанная программа имеет объём 32 кб.

В первой части курсовой работы рассматривается теоретический материал по данной теме. Она состоит из 13 страниц.

Во второй части разбираются практические задания. В ней содержится 3 программы,3 блок-схемы.

ТЕХНИЧЕСКОЕ ЗАДАНИЕ

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

Отчетный материал курсовой работы

Отлаженная версия программы на электронном носителе

Задание выдано “__”__ 2008 г.

Задание принято “__”__ 2008 г.

СОДЕРЖАНИЕ

Состав языка программирования.

1.1 Символьный тип данных, как составляющая языка программирования

1.2 Лексемы и разделители

1.3 Практическая направленность задач с символьными величинами

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

2.1 Задача 1. Блок-схема. Программа. Протокол

2.2 Задача 2. Блок-схема. Программа. Протокол

2.3 Задача 3. Блок-схема. Программа. Протокол

ВВЕДЕНИЕ

Обычный разговорный язык состоит из четырех основных элементов: символов (букв), слов, словосочетаний и предложений. Количество символов языка, образующих его алфавит, невелико. Количество слов неизмеримо больше, но все же конечно: все слова языка можно перечислить, например, сведя их в толковый словарь. Все словосочетания, а тем более предложения перечислить уже нельзя, но известны правила, по которым они составляются. Правила русского языка, например, изложены в соответствующих учебниках. Аналогично устроены все языки программирования. Типы данных с помощью типов данных программист указывает компилятору, как хранить информацию в программе. При объявлении переменной необходимо указать ее тип. Одни типы уже определены в языке, другие программисту приходится задавать самому. В ранних языках программирования допускалось ограниченное число типов данных, и pascal оказался одним из первых языков, допускающих определение в программе новых типов.

Типы данных, определяемые пользователем, обычно задаются в разделе определения типов программы или модуля (unit), однако это можно делать и внутри процедур или функции. Объявления типов действуют в пределах того блока, в котором они размещены. Вне этого блока ссылаться на такие типы нельзя. Внутри же они заменяют все внешние типы с тем же именем. Объявленные типы данных можно применять в любом месте области их видимости; запрещена только ссылка определяемого типа на самого себя (тут, однако, есть одно исключение, касающееся указателей). Объявления типов в pascal являются для компилятора чем-то вроде схем, которые он должен запомнить на случай, если вдруг встретит в программе ссылки на тот или иной тип. Само по себе объявление типа не вносит в программу никаких изменений.

ГЛАВА I

СОСТАВ ЯЗЫКА ПРОГРАММИРОВАНИЯ

1.1 Символьный тип данных, как составляющая языка программирования

Символы -- это основные неделимые знаки, из которых составляются все тексты программ на данном языке. Совокупность всех символов образует алфавит языка. Алфавит языка программирования несколько шире, чем алфавит естественного языка, и включает обычно латинские буквы, знаки арифметических операций, символы-разделители и ряд других специальных символов. Значениями символьного типа являются символы из множества ASCII (American Standard Code For information Interchange- американский стандартный код для обмена информацией). Это множество состоит из 256 различных символов, упорядоченных определенным образом, и содержит символы заглавных и строчных букв, цифр, и различных других символов, включая специальные управляющие символы. Допускаются некоторые отклонения от стандарта ASCII , в частности, при наличии соответствующей системной поддержки это множество может содержать буквы русского алфавита.

Порядковый номер (кодировку) значений символьного типа можно узнать из соответствующих разделов технических описаний. Согласно стандарту ASCII, каждому символу и некоторым управляющим инструкциям соответствует свой числовой код, принимающий значения от 0 до 127. В двоичном представлении ASCII-код использует 7 разрядов. Коды этих символов приведены в табл. 1.1.

Переменная типа Char хранит один символ. Буквальная символьная константа задается указанием символа, который записывается между апострофами. Примеры строковых и символьных констант:

В приведенном примере следует обратить внимание на последнюю константу. Это буква “девять", а не число девять. Если переменная Symbol описана как переменная типа Char, то допустимы следующие операторы присваивания:

Значение переменной символьного типа можно задать в операторе присваивания с помощью буквальной символьной константы или функции Chr. Функция Chr устанавливает соответствие между однобайтовыми целыми значениями кода и символами.

Противоположной по отношению к Chr является функция Qrd(x), которая возвращает код символьного аргумента.

Существует функция UpCase, которая преобразует строчные буквы латинского алфавита в прописные, но не изменяет другие символы, например:

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

Для представления самого апострофа его изображение удваивается.

Кроме того, некоторые управляющие символы ASCII можно представить в следующей форме:

где C- условное обозначение управляющего символа, например:

^C символ с кодировкой 7

Переменная типа char может получить значение в результате выполнения инструкции присваивания или ввода (read, readln). Если переменная типа char получает значение в результате выполнения операции присваивания, то справа от знака : = должно стоять выражение типа char, например, переменная типа char или символьная константа.

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

В памяти компьютера переменная типа char занимает один байт (это значит, что существует 255 различных символов). Каждому символу поставлено в соответствие число(код), причем код символа '0' меньше кода символа '1', символ 'А' -меньше, чем код символа 'В', а символа ' В' , в свою очередь, меньше кода символа 'С'.

Таким образом можно записать :

Предположим, например, что в программе имеется описание:

символьный тип язык программирование

Из тридцати двух управляющих символов нам, скорее всего, могут понадобиться лишь некоторые (табл. 1.2).

Таблица 1.2. Некоторые управляющие символы набора ASCII

Использование функции Сhr

Звуковой сигнал динамика

Возврат курсора на одну позицию

Первые 32 символа ASCII являются управляющими. Для большинства из них не существует соответствующей клавиши. Для того, чтобы включить в последовательность символов такие символы, введено понятие управляющего символа, для которого предусмотрена запись: ^ . Например, ^[ - соответствует клавише ; ^G - для звукового сигнала.

Чтение символа.

Обращение Read (f, v) t где v обозначает переменную, относящуюся к типу, совместимому с типом Char, эквивалентно оператору:

begin v := f^ ; Get(f) end

где все вхождения f обозначают одну и ту же переменную. Если перед обращением Read(f, v) было истинно eoln(f), то после будет истинно условие (v= ' ').

1.2 Лексемы и разделители

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

Разделители

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

Примечание начинается с символа < или (* (но не внутри строки символов) и заканчивается >или *). Само примечание может содержать любые символы, включая концы строк, за исключением > или *). Любое примечание может быть заменено на пробел, смысл текста программы при этом не изменяется.

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

Специальные символы и символы-слова

Существуют и альтернативные написания:

Лексемы- это неделимые последовательности символов алфавита (элементарные конструкции), имеющие самостоятельный смысл. Они образуются из основных символов языка, так же как слова обычного языка строятся из букв. Возможны лексемы, состоящие из одного символа, например, знаки операций. Нельзя, однако, провести прямую аналогию между лексемами и словами обычного языка. Дело в том, что любой язык программирования, конечно, имеет определенное количество зарезервированных (ключевых) слов, которые составляют словарь языка, но таких слов неизмеримо меньше, чем в естественном языке (всего несколько десятков). Однако программист может формировать по определенным правилам собственные слова -- идентификаторы. Из-за этой особенности текст программы на языке высокого уровня воспринимается сложнее, чем запись алгоритма на естественном языке. Совокупность лексем и правил их формирования образует лексику языка.

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

Операторы (инструкции или команды языка) задают полное описание некоторого действия, которое необходимо выполнить. Это аналог предложения, выражающего законченную мысль, в обычном языке. Для описания сложного действия может потребоваться группа операторов. В этом случае операторы объединяются в составной оператор или блок.

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

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

1.3 Практическая направленность задач с символьными величинами

Средства управления клавиатурой с помощью модуля CRT рассмотрим на примерах:

-- кодировку символов клавиатуры;

- ввода текстов с их высвечиванием на экране (процедуры Read и Readln);

- ввода символа без его высвечивания на экране (процедура ReadKey);

- определения нажатия на любую клавишу (функция KeyPressed).

При нажатии на каждую клавишу схемно вырабатывается уникальный код -код сканирования (скан-код). В программах он не используется. Код сканирования программно преобразуется в другой код, который и используется в программах. Для наиболее широко применимых кодов разработаны стандарты. Например, для кодировки символов используется код ASCII - American Standard Code for Information Interchange. Это 7-битовый код. С его помощью можно закодировать всего 128 символов с кодами 0..127. Символы с кодами 0..31 - служебные. При выводе они представляются пробелами. Некоторые из них могут иметь самостоятельное значение, например, 7 - звонок.

Каждый символ в памяти занимает 1 байт (8 бит). С помощью байта можно закодировать 256 символов с кодами 0…255. Символы с кодами 128…255 не ограничены стандартами. С их помощью можно кодировать национальные алфавиты и специальные символы псевдографики.

С помощью символов псевдографики можно представить в текстовом редакторе или вывести операторами программы некоторые рисунки, например состоящие из горизонтальных и вертикальных одинарных и двойных линий для представления шапки таблицы, подчеркивания строк таблицы, вертикальные линии для разделения отдельных ее граф. Воспроизвести символ большинства кодов на экране можно, нажав соответствующую ему клавишу. Но этого нельзя сделать, например, для кодов псевдографики. Любой из символов, имеющих коды 1..255, можно воспроизвести на экране, дополнительно используя клавишу Alt. Для этого в среде Паскаль надо установить режим работы с цифровой клавиатурой (правая часть клавиатуры), нажав клавишу Num Lock, что фиксируется индикатором Num. Lock. Затем надо нажать клавишу Alt и, не опуская ее, на цифровой клавиатуре набрать код символ, после чего отпустить клавишу Alt. На экране воспроизведется символ, код которого был набран.

Процедуры Read и Readln модуля System осуществляют ввод данных, в том числе с помощью клавиатуры. Причем они приостанавливают выполнение программы до тех пор, пока не будет нажата клавиша Eater. Для этого сначала значение набирается с помощью клавиатуры, запоминается в буфере и высвечивается на экране, и после нажатия клавиша Enter данные из буфера передаются в область ОП переменных программы. Ввод с помощью процедур Read и Readln имеет следующие недостатки:

1) с их помощью невозможно опознать нажатие на клавиши управления курсором (^,v,>,

  • Для учеников 1-11 классов и дошкольников
  • Бесплатные сертификаты учителям и участникам

Строковый т ип данных

Строка — упорядоченная последовательность символов.

Тип string (строка) не входит в стандартный язык Паскаль, но он прочно вошел во все известные компиляторы с этого языка.

Количество символов в строке называется ее длиной . Длина строки может лежать в диапазоне от 0 до 255.

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

Все переменные строковых типов совместимы между собой при выполнении различных операций (+) над строками.

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

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

val(s,n,i) — переводит строку s в число (вещественное или целое, согласно типу переменной n), если строка s не является изображением числа соответствующего типа по правилам Паскаля, то значение переменной i будет отлично от нуля, при удачной конвертации значение i равно нулю;

str(i,s) — переводит число в его строковое представление;

delete(s,i,n) — удаляет из строки s n символов, начиная с символа с номером i;

insert(s1,s,i) — вставляет в строку s подстроку s1, перед символом с номером i

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

copy(s,i,n) — выделяет из строки s подстроку длиной n, начиная с символа i;

concat(s1,s2,…,sN) — выполняет сцепление (конкатенацию) строк s 1 ,s 2 ,…,s N в одну строку;

length(s) — определяет реальную длину строки; результат – значение целого типа;

pos(s1,s) — выдает целое число – номер позиции в строке s, с которой начинается подстрока s1; если подстрока не найдена, то выдает ноль

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

var s: string [50];

( string в переводе строка ). Объявление строки максимальной (255) длины еще короче:

var s : string ;

Пример присваивания :

s:='String переводится как строка';

Ввод/вывод строк.

Для того, чтобы ввести строку s, достаточно написать readln (s); А чтобы вывести: writeln (s); И все. Т.е. вводятся и выводятся строки не поэлементно, как массивы, а целиком.

Pascal позволяет выполнять операции сравнения двух строк. Сравнение происходит посимвольно слева направо: сравниваются коды соответствующих символов до тех пор, пока не нарушится равенство или не кончится одна из строк (или обе сразу), при этом сразу делается вывод о знаке неравенства. Две строки называются равными, если они равны по длине и совпадают посимвольно.

Под склеиванием понимается последовательное объединение нескольких строк

, после выполнения оператора s:='Иван' + ' Васильевич'; в переменной s будет содержаться строка 'Иван Васильевич'. Как, Вы уже поняли, операция сложения строк обозначается + .

Даны две строки. Объединить их в одну в порядке следования, разделив одним пробелом.

Решение :

Program pr3;

var s1, s2, s: string ;

writeln (’введите первую строку’);

readln ( s 1);

writeln (’введите вторую строку’);

s : =Concat(s1, ’ ’, s2);

writeln (’ получили строку ==> ’,s);

Длина строки.

Под длиной строки понимается фактическое (а не максимально возможное!) количество символов в строке. Это значение можно найти при помощи функции Length ( str ) , результат которой – целое число, равное количеству символов

Подсчитать сколько раз в данной строке встречается символ ’a’.

Решение :

Program pr1;

var s: string ;

writeln (’ введите строку ’);

for i:=1 to length(s) do

writeln (’количество символов а равно’, k );

Определить сколько во введенной непустой строке символов ‘ a ’

program n5_1;

k,n,i: integer ;

writeln ('BB a'); readln (a);

n := length ( a );

for i:=1 to n do

then writeln ( ' к - во букв " а "= ',k)

else writeln ( 'букв "а" в строке нет' );

Дана программа подсчета количества букв А в строковой переменной:

t :=’ А роза упала на лапу Азора’;

for i:=1 to length (t) do

if t [i]=’a’ then k:=k+1;

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

Program Balance;

Var S: String ; n, k, i : Integer ;

BEGIN ClrScr;

Write ('Введите линейную запись математической формулы :');

i:=1; k:=0; n:= Length (S);

While (k>=0) and (i do

If S[i] = '(' then k:=k + 1;

If S[i] = ')' then k:=k - 1;

If k=0 then Write (' Есть баланс ') else Write (' Нет баланса ');

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

Решение :

Program pr4;

var s1, s: string ;

writeln (’ введите строку ’);

for i:=1 to length(s) do

writeln (’ обращенная строка ==> ’,s1);

Дано произвольное слово. Проверить, является ли оно палиндромом. Примеры палиндромов: казак, шалаш, мадам.

var x , x 1: string ;

writeln (' введите слово ');

x 1:= x 1+ x [ i ]; на лево и формируем перевернутое слово х1>

then writeln ('перевёртыш')

else writeln ('не перевёртыш');

Дано слово. Записать каждый символ по два раза.

Пример ввода: Пример вывода:

Program stroki;

d,i : longint;

readln(s); d:=length(s);

For i:=1 to d do write(s[i],s[i]);

Дано слово. Между всеми буквами вставить символ '-'.

Пример ввода: Пример вывода:

Program stroki;

d,i : longint;

readln(s); d:=length(s);

For i:=1 to d-1 do write(s[i],'-');

Дано слово. Добавить к слову это же слово, но только перевернутое.

Пример ввода: Пример вывода:

Program stroki;

d,i : longint;

readln(s); d:=length(s);

For i:=1 to d do p:=s[i]+p;

Удаление из строки фрагмента.

Для удаления из строки фрагмента используется процедура Delete ( str , n , m ) , которая вырезает из строки str m символов начиная с n -го, таким образом, сама строка изменяется.

Пример : Str1:=’abcdefgh’;

После выполнения этих операторов из строки будут удалены четыре символа начиная с третьего, т.е. строка будет такой: str 1=’ abgh ’.

Если в строке нечетное число символов, то удалить средний.

program del ;

writeln ('введите строку');

readln ( st );

k := length ( st );

if k mod 2=1

then delete (st, k div 2 +1, 1);

writeln ('измененная строка: ',st);

Вставка подстроки в строку.

Для вставки подстроки в строку используется процедура insert ( str 1, str 2, n ) , которая вставляет строку str 1 в строку str 2 начиная с n -го символа, при этом первая строка остается такойже, как и была, а вторая получает новое значение.

Пример: str 1:=’ ABCDEFGH ’;

insert ( str 1, str 2,3);

В результате выполнения данной процедуры строка будет такой: str 2=’ abABCDEFGHcdefgh ’. Этот же результат будет и после выполнения такой последовательности операторов:

Дана строка. Заменить в ней все вхождения подстроки ’ааа’ на подстроку ’а’.

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

program zamena1;

writeln (' введите строку ');

While Pos ('aaa',st)<>0 do

k:= Pos ('aaa',st);

delete (st,k,length('aaa'));

insert ('a',st,k);

writeln ('измененная строка: ',st);

Дана строка. Заменить в ней все вхождения подстроки ’child’ на подстроку ’children’.

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

program zamena2;

s1,k,s,st: string ;

writeln (' введите строку ');

for i:= length (st)-d+1 downto 1 do

k:= copy (st,i,d);

delete (st,i,d);

insert (s1,st,i);

writeln ('измененная строка: ', st );

Копирование.

Функция copy ( Str , n , m ) копирует m символов строки str начиная с n -го символа, при этом исходная строка не меняется.

Пример: str 1:=’ ABCDEFGH ’;

Значение переменной str 3=’ DEF ’. А на экран будут выведены следующие строки:

Подсчитать сколько раз в данной строке встречаются сочетания символов ’ова’.

Решение :

Program pr2;

var s: string ;

writeln (’ введите строку ’);

for i:=1 to length(s)-2 do

if copy(s,i,3)=’ ова ’

writeln (’количество символов а равно’, k );

Program strok ;

t :=’Красная прекрасная ужасная’;

for i:=1 to length (t)-1 do

Поиск подстроки в строке.

Имеется функция, определяющая позицию подстроки в строке, – POS ( str 1, str 2). Результат этой функции – целое число, и оно определяет номер элемента, с которого начинается первое вхождение подстроки str 1 в строку str 2. Если str 1 не входит в str 2 , то значение функции равно 0.

Дано слово. Сформировать новое слово, в котором будут находится все цифры.

Пример ввода: Пример вывода:

A 1 B 222 a 3 cdjhs 42442124 1222342442124

Program stroki;

s,p,x : string;

d,i : longint;

x:='1234567890';

For i:=1 to d do

Дано предложение, состоящее из двух слов и в конце предложения стоит точка. Первое слово - существительное, второе слово - число. Надо вывести число.

Пример ввода: Пример вывода:

МИСТИКА 18237. 18237

Program stroki;

pr,pt : longint;

Дано слово. Удалить ненужные символы, '12abc,.' , в слове.

Пример ввода: Пример вывода:

1М b ИС a Т,ИКА2. МИСТИКА

Program stroki;

s,p,x : string;

i,d : longint;

For i:=1 to d do

if pos(s[i],x)=0 then p:=p+s[i];

Числа и строки.

Часто возникает необходимость получить строковое представление числа и наоборот (например, получить строку '13' из числа 13). Для работы с числами и строками применяются две процедуры.

Str ( n , S ) – переводит числовое значение n в строковое и присваивает результат строке S , причем можно переводить как целые числа, так и вещественные.

str (1234, s ) – после выполнения s =’1234’;

str (452.567, s ) – переводим вещественное число с фиксированной запятой, результат s =’452.567’;

Val ( str , n , k ) – переводит строковое значение в числовое. Если данная строка действительно является записью числа (целого или вещественного), то значение k =0, а n – это искомое число, иначе k будет равно номеру первого символа, с которым процедура Val “не справилась”.

Val (‘1234’, n , k ) – n =1234, k =0;

Val(‘234.56’, n, k) – n =234.56, k=0;

Val(‘2.3456e+2’, n, k) – n=2.3456e+2, k=0;

Дана строка. Выяснить, является ли она записью целого числа.

program ex 1;

writeln ('введите строку ');

then writeln ('v=',)

else writeln (‘не является‘);

Преобразовать число х в строку.

Решение :

program ex2;

writeln (' введите x');

writeln ( s );

Дана строка. Подсчитать сумму встречающихся в ней цифр.

Решение :

program ex3;

v,c,sum,i: integer ;

writeln (' введите строку ');

for i:=1 to length (s) do

then sum:=sum+v;

writeln ('sum=',sum);

Дана строка. Удалить из нее все символы не являющиеся цифрами.

Решение :

program ex3;

v,c,i: integer ;

writeln (' введите строку ');

While i length (s) do

then delete (s,i,1)

writeln ('строка без букв –', s );

Дана строка содержащая цифры. Найти произведение этих цифр.

Program chisla;

a: string ; i,code,s,p :integer ;

writeln (' введите строку ');

for i:=1 to length(a) do begin

if (a[i]='0') or (a[i]='1') or (a[i]='2') or (a[i]='3') or (a[i]='4') or (a[i]='5') or (a[i]='6') or (a[i]='7') or (a[i]='8') or (a[i]='9')

then begin val (a[i],s,code); p:=p*s; end;

writeln ('p=',p);

readln ;

Дано слово. Определить, состоит ли слово из одних цифр.

Пример ввода: Пример вывода:

Пример ввода: Пример вывода:

Program stroki ;

d,i : longint;

readln(s); d:=length(s);

x:='1234567890';

While (i 0) do i:=i+1;

then writeln('Yes')

else writeln('No');

Дано слово. Проверить, есть ли в составе слова цифры.

Пример ввода: Пример вывода:

Пример ввода: Пример вывода:

Program stroki;

d,i : longint;

readln(s); d:=length(s);

x:='1234567890';

then writeln('No')

else writeln('Yes');

Дано два слова. Если все символы первого слова встречаются во втором слове (символы могут встречаться не по порядку), то вывести 'Yes', иначе - 'No'.

Вы можете изучить и скачать доклад-презентацию на тему Символьные и Строковые величины. Презентация на заданную тему содержит 19 слайдов. Для просмотра воспользуйтесь проигрывателем, если материал оказался полезным для Вас - поделитесь им с друзьями с помощью социальных кнопок и добавьте наш сайт презентаций в закладки!

500
500
500
500
500
500
500
500
500
500
500
500
500
500
500
500
500
500
500

ОГЛАВЛЕНИЕ Символьные и Строковые величины Сравнение переменных Сложение переменных Функция Concat Функция Length Функция Pos Функция Copy Функции Ord и Chr Процедура Delete Процедура Insert Процедура Val Процедура Str Цикл с символьной переменной

СРАВНЕНИЕ СИМВОЛЬНЫХ ВЕЛИЧИН Строковую переменную можно сравнить с другой переменной или константой типа STRING, используя операторы =, , =,<>. Строки сравниваются посимвольно от первого символа.

СЛОЖЕНИЕ ПЕРЕМЕННЫХ Объединение нескольких строк в одну: к концу первой строки присоединяется начало второй и т. д. Длина результирующей строки должна быть

Возвращает длину строки. Возвращает длину строки. Length (параметр) Параметр – переменная или константа строкового типа. Возвращаемое значение (целое число) – количество символов, из которых состоит строка.

ФУНКЦИЯ CONCAT Concat(s1. sn) возвращает строку, являющуюся результатом слияния строк s1. sn. Результат тот же, что у выражения s1+s2+. +sn.

ЗАДАНИЯ Решить задачу 4 с использованием функции Concat Описать строковую константу k=‘Кабинет’ и строковую переменную pred. Ввести с клавиатуры название предмета (в нужном падеже). Получить в переменной res полное название кабинета. Объявить константу slovo1='волна'. Сравнить ее с переменной slovo2, присваивая ей значения: 'волга', 'вол', 'ворон‘.

ФУНКЦИЯ POS Позволяет определить положение подстроки в строке. Если подстрока не найдена возвращается 0. Общий вид: Pos(Подстрока, Строка); где Подстрока – строковая константа или переменная, которую надо найти в строковой константе или переменной Строка.

ФУНКЦИЯ COPY Позволяет выделить фрагмент строки. Общий вид: Copy(Строка, p, n); где Строка – переменная строкового типа, содержащая строку, фрагмент которой надо получить; р – номер символа, с которого начинается выделяемая подстрока; n – длина выделяемой подстроки.

ПРОЦЕДУРА DELETE Позволяет удалить часть строки. Общий вид: DELETE(Строка,p,n); где Строка – переменная строкового типа; р – номер символа, с которого начинается удаляемая подстрока; n – длина удаляемой подстроки.

ПРОЦЕДУРА INSERT Позволяет вставить подстроку в строку символов. Cтрока раздвигается. В общем виде обращение к процедуре выглядит так: Insert (subs, s, index); вставляет подстроку subs в строку s с позиции index.

ПРОЦЕДУРА VAL Преобразует строку S к числовому представлению и записывает результат в переменную V. Val(S, V, CODE) где S – строковая константа или переменная, содержащая изображение числа; V – переменная, которой должно быть присвоено значение числа, изображенного в строке; CODE – возвращаемый процедурой код ошибки. Если строка может быть преобразована в число, то код ошибки равен нулю.

ПРОЦЕДУРА STR Преобразует число в строку. Str(N, S) ; где N– переменная, которая должна быть преобразована в строку; S– строковая переменная.

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

Читайте также: