Строковые константы записываются как последовательности символов, ограниченные апострофами. Пример: 'Текстовая строка' Пустой символ обозначается двумя подряд стоящими апострофами. Выражения типа char можно присваивать любым строковым переменным. В Турбо Паскаль имеется простой доступ к отдельным символам строковой переменной: i-й символ переменной st записывается как st[i]. Например, если st - это 'Строка', то st[1] - это 'С', st[2] - это 'т', st[3] - 'р' и так далее. Строковый тип данных Для обработки строковой информации в Турбо Паскаль введен строковый тип данных. Строкой в Паскале называется последовательность из определенного количества символов. Количество символов последовательности называется длиной строки. Синтаксис: var s: string[n]; var s: string; n - максимально возможная длина строки - целое число в диапазоне Если этот параметр опущен, то по умолчанию он принимается равным 255
Над строковыми данными определена операция слияния (конкантенации), обозначаемая знаком +. Например: a := 'Turbo'; b := 'Pascal'; c := a + b; В этом примере переменная c приобретет значение 'TurboPascal'. Операции отношения =,, =, производят сравнение двух строк, в результате чего получается логическая величина (true или false). Две строки сравниваются посимвольно, слева направо, по кодам символов. Если одна строка меньше другой по длине, недостающие символы короткой строки заменяются символом с кодом/ Пример: ВыражениеРезультат 'cosmi'
Процедуры и функции для работы со строками В системе Turbo Pascal имеется несколько полезных стандартных процедур и функций, ориентированных на работу со строками. 1.Length(s:string):integer Функция возвращает в качестве результата значение текущей длины строки-параметра Пример. n := length('Pascal'); {n будет равно 6} 2. Copy(s:string; index:integer; count:integer):string Функция возвращает подстроку, выделенную из исходной строки s, длиной count символов, начиная с символа под номером index. Пример. s := 'Система Turbo Pascal'; s2 := copy(s, 1, 7);{s2 будет равно 'Система'} s3 := copy(s, 9, 5); {s3 будет равно 'Turbo'} s4 := copy(s, 15, 6); {s4 будет равно 'Pascal'}
3. Delete(var s:string; index,count:integer) Процедура удаляет из строки-параметра s подстроку длиной count символов, начиная с символа под номером index. Пример. s := 'Система Turbo Pascal'; delete(s,8,6); {s будет равно 'Система Pascal'} 4. Insert(source:string; var s:string;index:integer) Процедура предназначена для вставки строки source в строку s, начиная с символа index этой строки. Пример. s := 'Система Pascal'; insert('Turbo ',s,9); {s будет равно 'Система Turbo Pascal'} 5. Pos(substr,s:string):byte Функция производит поиск в строке s подстроки substr. Результатом функции является номер первой позиции подстроки в исходной строке. Если подстрока не найдена, то функция возвращает 0. Пример. s := 'Система Turbo Pascal'; x1 := pos('Pascal', s); {x1 будет равно 15} x2 := pos('Basic', s); {x2 будет равно 0}
6. Str(X: арифметическое выражение; var st: string) Процедура преобразует численное выражение X в его строковое представление и помещает результат в st. 7. Val(st: string; x: числовая переменная; var code: integer) Процедура преобразует строковую запись числа, содержащуюся в st, в числовое представление, помещая результат в x. x - может быть как целой, так и действительной переменной. 8. Chr(n: byte): char Функция возвращает символ по коду, равному значению выражения n. Если n можно представить как числовую константу, то можно также пользоваться записью #n. 9. Ord(ch: char): byte; В данном случае функция возвращает код символа ch. 10. UpCase(c: char): char; Если c - строчная латинская буква, то функция возвращает соответствующую прописную латинскую букву, в противном случае символ c возвращается без изменения.
Задача. 1 С клавиатуры вводится произвольное слово. Записать его в обратом порядке. Program Task; Uses Crt; Var n,i : integer; s, x: string; Begin ClrScr; Write (vvedite slovo '); Readln (x); s:=''; n:=Length(x); For i:=1 to n do s:=Copy(x,i,1) + s; Writeln(S); Readln; End.
program turbo; var s: string; k,i:integer; begin write('vvedite stroky :'); readln(s); for i:=1 to length(s) do if (s[i]=' ') or (s[i]='.') then k:=k+1; writeln('kol-vo slov v stroke= ',k) end. Задача. 2 С клавиатуры вводится произвольная строка. Определить количество слов в строке.
Задания 1.Составить программу получения из слова «дисковод» слова «воск», используя операцию сцепления и функцию Copy. 2.Составить программу получения слова «правило» из слова «операция», используя процедуры Delete, Insert. 3.В данном слове заменить первый и последний символы на *. 4.В данном слове произвести обмен первого и последнего символов. 5.К данному слову присоединить столько !, сколько в нем имеется букв (например, из строки «УРА» получить «УРА!!!»). 6.В данной строке вставить пробел после каждого символа. 7.Удвоить все буквы во введенном слове. 8.Перевернуть введенную строку (например, из «ДИСК» получится «КСИД»). 9.В данной строке удалить все пробелы. 10.Строка представляет собой запись целого числа. Составить программу перевода ее в соответствующую величину целого типа.
Program lishnee; var s:string; i:integer; begin readln(s); i:=1; repeat if copy(s,i,2)=' ' then delete(s,i,1) else i:=i+1; until i>length(s); writeln('novaya stroka= ',s) end. Задача. 3 С клавиатуры вводится произвольная строка. Удалить лишние пробелы между словами в строке. Удалить символ с I позиции i=i+1 конец S I = 1 copy(s,i,2)=' ' i>длина(S) начало S да нет
Работа со звуком Delay (time) – задержка при выполнении программы, где time – время задержки в миллисекундах Процедуры управления звуком Sound (Hz) – включает внутренний динамик. Hz задает частоту генерируемого динамиком сигнала в герцах. Звуковой сигнал звучит до тех пор, пока не будет выключен с помощью процедуры Nosound. Nosound – процедура, которая отключает внутренний динамик. Задание. Рассмотрите программу, которая выводит гамму в первой, второй и третьей октаве: uses crt; {частоты соответствуют нотам первой октавы, для каждой следующей октавы частоты удваиваются} const octava_1:array [1..7] of integer=(262,294,330,349,392,440,493); var n,octava,koef:integer; begin koef:=1; for octava:=1 to 3 do {три октавы} begin for n:=1 to 7 do {по 7 нот в каждой октаве} begin sound(octava_1[n]*koef); delay(50000);nosound; end; koef:=koef*2; {переходим на октаву выше} end; end.