Главная » Просмотр файлов » Курсовик ЯВУ

Курсовик ЯВУ (1021667), страница 2

Файл №1021667 Курсовик ЯВУ (Курсовая работа ЯВУ) 2 страницаКурсовик ЯВУ (1021667) страница 22017-07-10СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 2)

3. Управляющие символы

В таблице 1 кроме обычных символов имеются специальные управляющие символы. Они представляют собой команды, вывод которых на стандартное выходное устройство приводит к выполнению определенных действий. Эти символы имеют мнемонические двух- или трехбуквенные сокращения, пришедшие к нам из эры телеграфа. К управляющему символу можно обратиться по его ASCII-коду или по Ctrl-последовательности. Последняя представляет собой код, порождаемый одновременным нажатием клавиши Ctrl и какой-либо другой клавиши.

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

Var Сh: Char;

Тогда операторы

Ch: = chr (7);

Ch: = #7;

Ch: = ^G

присваивают символьной переменной Ch одно и то же символьное значение. Здесь ^G обозначает Ctrl-последовательность Ctrl+G (управляющий символ BEL – звуковой сигнал). Знак # и следующая за ним целая беззнаковая константа обозначает код символа.

Управляющие символы:

NUL, 00 — Null, пустой.

SOH, 01 — Start Of Heading, начало заголовка.

STX, 02 — Start of Text, начало текста.

ETX, 03 — End of Text, конец текста.

EOT, 04 — End of Transmission, конец передачи.

ENQ, 05 — Enquire. Прошу подтверждения.

ACK, 06 — Acknowledgement. Подтверждаю.

BEL, 07 — Bell, звонок, звуковой сигнал. Ctrl+G

BS, 08 — Backspace, возврат на один символ. Ctrl+H

TAB, 09 — Tabulation. Обозначался также HT — Horizontal Tabulation, горизонтальная табуляция. Ctrl+I

LF, 0A — Line Feed, перевод строки. Ctrl+J

VT, 0B — Vertical Tab, вертикальная табуляция.

FF, 0C — Form Feed, новая страница. Ctrl+L

CR, 0D — Carriage Return, возврат каретки. Ctrl+M

SO, 0E — Shift Out, начало использования национальной кодировки.

SI, 0F — Shift In, обратно к Shift Out.

DLE, 10 — Data Link Escape, следующие символы имеют специальный смысл.

DC1, 11 — Device Control 1, 1-й символ управления устройством — включить устройство чтения перфоленты.

DC2, 12 — Device Control 2, 2-й символ управления устройством — включить перфоратор.

DC3, 13 — Device Control 3, 3-й символ управления устройством — выключить устройство чтения перфоленты.

DC4, 14 — Device Control 4, 4-й символ управления устройством — выключить перфоратор.

NAK, 15 — Negative Acknowledgment, не подтверждаю. Обратно к Acknowledgment.

SYN, 16 — Synchronization. Синхронизация с чем-либо.

ETB, 17 — End of Text Block, конец текстового блока.

CAN, 18 — Cancel, отмена

EM, 19 — End of Medium, кончилась перфолента и т. д.

SUB, 1A — Substitute, подставить. Конец файла. Ctrl+Z

ESC, 1B — Escape. Символ Escape. Ctrl+[

FS, 1C — File Separator, разделитель файлов.

GS, 1D — Group Separator, разделитель групп.

RS, 1E — Record Separator, разделитель записей.

US, 1F — Unit Separator, разделитель юнитов.

DEL, 7F — Delete, стереть (последний символ).

Символьные данные можно вводить и выводить процедурами Read и Write. При вводе и выводе символьные значения изображаются без апострофов. Для символьные величин определены функции:

Ord(x) – возвращает номер символа

Pred(x) – возвращает символ с номером, меньшим на 1

Succ(x) – возвращает символ с номером, большим на 1.

Эти функции, однако, определены не только для символов, но и для любого порядкового типа данных. Порядковым типом называется такой тип, все допустимые значение которого можно пронумеровать от 0 до некоторого N (типы Byte, Integer, ShortInt, Word, LongInt). Значение функции Ord от числового аргумента равно самому этому аргументу, Pred(x) дает значение х-1, а Succ(x) – значение х+1. Функция Chr(x) в некотором смысле обратна функции Ord: для заданного числового аргумента x она возвращает символ с соответствующим номером. Для символьных переменных (так же, как и для любых переменных порядкового типа) определены процедуры Inc и Dec. Процедура Inc увеличивает значение любой переменной порядкового типа или указателя. Для увеличения значения переменной вещественного типа процедуру Inc использовать нельзя. Увеличение значения указателя изменяет его в соответствии с размером базового типа. Например, значение указателя на AnsiChar увеличивается на 1, указателя на WideChar - на 2. По умолчанию переменная увеличивается на один элемент, однако можно указать целый параметр для увеличения значения переменной на другую величину. При увеличении указателя Count умножается на размер базового типа. Процедура Dec уменьшает значение переменной любого порядкового типа или указателя, но ее нельзя использовать для уменьшения значения вещественной переменной. Уменьшение значения указателя изменяет его значение на величину, равную размеру базового типа. Например, значение указателя на AnsiChar уменьшается на 1, а указателя на WideChar – на 2. По умолчанию переменная уменьшается на одну единицу, однако можно указать целый параметр для изменения на другую величину. При уменьшении указателя значение переменной Count умножается на размер базового типа.

Значением символьной переменной (типа Char) является только один символ.

4. Строковый тип

В Паскале широко используется тип String (строка) – это последовательность символов произвольной длины (но не более 255 символов). Строку можно было бы рассматривать как одномерный массив символов, однако в связи с широким использованием строк и некоторыми особенностями в сравнении со стандартными массивами они выделены в отдельный тип данных. В отличие от обычного массива с фиксированной длиной, длина строковой переменной может меняться.

Строковые переменные и типизированные константы записываются в виде:

s: string;

s: string[максимальная длина];

Если максимальная длина не задана, то по умолчанию она берется целочисленным константным выражением и никогда не может превышать 255. Одиночный байт может принимать 256 различных значений от 0 до 255. Это ограничение обусловлено самой структурой типа String: фактически строка – это массив Array[byte] of Char, причем в нулевом символе закодирована текущая длина строки. строковые переменные могут иметь любую длину от 0 до максимальной. В программе строки можно использовать и как единый структурированный объект, и как массив символов. Обращаться к элементам следует так же, как и к элементам массива, т.е. есть возможность доступа к отдельным байтам строковой переменной.

4.1. Функции и процедуры для работы со строками

В Паскале имеется набор функций и процедур для работы со строками.

1. К строкам можно применить операцию конкатенации, которая обозначается знаком «плюс». Конкатенация – это объединение строк.

SS1:= ‘ABC’;

SS2:= SS1 + ‘DEF’;

Результатом такой последовательности операторов будет строка ‘ABCDEF’. Несмотря на то, что конкатенация выглядит как арифметическое сложение, результат этой операции зависит от порядка слагаемых и меняется при их перестановке. Результатом выполнения последовательности операторов

SS1:= ‘ABC’;

SS2:= ‘DEF’ + SS1;

будет значение ‘DEFABC’. Длина строковой переменной SS2 должна назначаться с учетом суммарной длины слагаемых.

Строковая константа в исходном тексте программы должна размещаться в пределах одной строки. Простой перенос части символьного значения на другую строку приведет к ошибке компиляции «Error 8: String constant exceeds line». Чтобы задать длинное строковое значение, занимающее в тексте программы несколько строк, можно воспользоваться операцией конкатенации. Операцию слияния строк выполняет функция Concat (s1,s2).

a := 'Turbo';

b := 'Pascal';

c := a + b; {переменная с приобретает значение Turbo Pascal}

2. Процедура ClrScr (модуль Crt) очищает экран, а GotoXY(column, line) (модуль Crt) устанавливает курсор в позицию column на строке line.

3. Функция Length(str) определяет длину аргумента str строкового типа.

n := length('Pascal'); {n будет равно 6}

4. Процедура Delete (S: string, Index: integer, Count: Integer) удаляет из строки S подстроку, начинающуюся с символа с номером Index и имеющую длину Count.

s := 'Система Turbo Pascal';

delete(s,8,6); {s будет равно 'Система Pascal'}

5. Функция Pos (substr: string, s: string): Byte – возвращает номер первого слева символа строки S, начиная с которого строка Substr входит в S. Если Substr не входит в S, то значение функции равно нулю.

s := 'Система Turbo Pascal';

x1 := pos('Pascal', s); {x1 будет равно 15}

x2 := pos('Basic', s); {x2 будет равно 0}

6. Функция Copy (S: string, Index: Integer, Count: Integer): String – возвращает подстроку строки S, которая начинается с символа с номером Index и имеющую длину Count.

s := 'Система Turbo Pascal';

s2 := copy(s, 1, 7); {s2 будет равно 'Система'}

s3 := copy(s, 9, 5); {s3 будет равно 'Turbo'}

s4 := copy(s, 15, 6); {s4 будет равно 'Pascal'}

7. Процедура Insert (Substr: String, S: String, Index: Integer) вставляет в строку S подстроку Substr начиная с символа с номером Index.

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

s := 'Система Pascal';

insert('Turbo ',s,9); {s будет равно 'Система Turbo Pascal'}

8. Процедура Val (S: String, V; Code: Integer) – преобразует строку S в число V (если это возможно). V – любая переменная арифметического типа, переменная Code возвращает 0, если преобразование прошло успешно, или номер неправильного символа строки.

9. Процедура Str (X [: Width [:Decimals]]; S: String) – преобразует произвольное арифметическое выражение X в строку S, параметры Width и Decimals позволяют форматировать строку и имеют такой же смысл, как и в процедуре Writeln (Write).

5. Практическая часть

5.1. Подсчет количества слов в тексте.

5.1.1. Слова в тексте разделены одним пробелом.

program slova;

{$APPTYPE CONSOLE}

function rus(s:string):string;

var i:integer;

begin

for i:=1 to length(s) do

case s[i] of

'A'..'п': s[i]:=chr(ord(s[i])-64);

'р'..'я': s[i]:=chr(ord(s[i])-16);

end;

rus:=s;

end;

var

Text: string; //заданный текст

i, num : Integer; //num - количество слов в тексте

b : char; //текущая буква

begin

writeln (rus('Введите текст :'));

readln (Text);

num:=1;

for i:=1 to length(Text) do //побуквенный цикл

begin

b:=Text[i];

If (b = ' ' ) then num:=num+1;

end;

writeln (rus('Количество слов в тексте равно : '), num);

readln;

end.

--------------------------------------------------------------------------------

Введите текст :

Borland Turbo Pascal

Количество слов в тексте равно : 3

Номер теста

Проверяемый случай

Данные

Результат

1

В строке записано одно слово

Text: ‘Borland’

num = 1

2

В строке записано 3 слова

Text: ‘Borland Turbo Pascal’

num = 3

5.1.2. Слова в тексте разделены произвольным количеством пробелов.

program slova2;

{$APPTYPE CONSOLE}

function rus(s:string):string;

var i:integer;

begin

for i:=1 to length(s) do

case s[i] of

'A'..'п': s[i]:=chr(ord(s[i])-64);

'р'..'я': s[i]:=chr(ord(s[i])-16);

end;

rus:=s;

end;

var

Text: string; //заданный текст

i, num: Integer; //num - количество слов в тексте

flag: boolean;

b: char; //текущая буква

begin

writeln(rus('Введите текст :'));

readln(Text);

num := 0;

flag := true;

for i := 1 to length(text) do //побуквенный цикл

begin

b := text[i]; //текущая буква текста

if (b <> ' ') and flag

then num := num+1;

flag := (b=' ')

end;

writeln;

writeln(rus('Количество слов в тексте равно : '), num);

readln;

end.

----------------------------------------------------------------------------------------------------

Введите текст :

Языки программирования высокого уровня

Характеристики

Тип файла
Документ
Размер
282 Kb
Тип материала
Высшее учебное заведение

Список файлов учебной работы

Курсовая работа ЯВУ
Курсовая работа ЯВУ
CODE
PROGRAM
bal.cfg
bal.dof
bal.dpr
bal.exe
bal.~dpr
slova.cfg
slova.dof
slova.dpr
slova.exe
slova2.cfg
slova2.dof
slova2.dpr
slova2.exe
slova2.~dpr
stroka.cfg
stroka.dof
stroka.dpr
stroka.exe
stroka.~dpr
text.cfg
text.dof
text.dpr
Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
7029
Авторов
на СтудИзбе
260
Средний доход
с одного платного файла
Обучение Подробнее