Скачать презентацию Строки Ø Ø Ø Описание строковой переменной Действия Скачать презентацию Строки Ø Ø Ø Описание строковой переменной Действия

Строки для физиков10А.ppt

  • Количество слайдов: 24

Строки Ø Ø Ø Описание строковой переменной Действия со строками Стандартные функции Стандартные процедуры Строки Ø Ø Ø Описание строковой переменной Действия со строками Стандартные функции Стандартные процедуры Процедуры преобразования типов

Строка – упорядоченная последовательность символов. Количество символов в строке называется ее длиной. Длина строки Строка – упорядоченная последовательность символов. Количество символов в строке называется ее длиной. Длина строки может лежать в диапазоне от 0 до 255. Каждый символ строковой величины занимает 1 байт памяти и имеет числовой код в соответствии с таблицей кодов ASCII. Строка представляет собой особую форму одномерного массива символов, которая имеет существенное отличие. Массив символов имеет фиксированную длину (количество элементов), которая определяется при описании. Строка имеет переменную длину.

Описание строковой переменной var s: string; длина строки s[4] s[3] 255 1 7 П Описание строковой переменной var s: string; длина строки s[4] s[3] 255 1 7 П р и в е т ! ¤ ¤ ¤ … ¤ ¤ ¤ рабочая часть s[1] s[2] 20 1 var s: string[20]; Длина строки: n : = length ( s ); var n: integer;

Var s 1: string[10]; s 2: string[20]; smax: string; Строковая переменная s 1 может Var s 1: string[10]; s 2: string[20]; smax: string; Строковая переменная s 1 может содержать не более 10 символов, переменная s 2 – не более 20. Если же при описании строки ее максимальная длина не указывается, то по умолчанию принимается максимально допустимая длина, равная 255 символам (переменная smax). .

Действия со строками Символы в строке упорядочены, каждый из них имеет порядковый номер, начиная Действия со строками Символы в строке упорядочены, каждый из них имеет порядковый номер, начиная с первого. Имеется возможность обратиться к любому элементу строки, указав его номер, так же как это делается в одномерных массивах. Например, s 1[2] позволяет обратиться ко второму символу в строке s 1, при этом мы можем поменять это значение, выполнив оператор присваивания s 1[2]: = ‘r’, можем вывести на экран это значение или присвоить его другой переменной.

Операции отношения позволяют сравнивать строки на Ø отношение равенства (=), Øнеравенства (<>), Øбольше (>), Операции отношения позволяют сравнивать строки на Ø отношение равенства (=), Øнеравенства (<>), Øбольше (>), Øменьше (<), Øбольше или равно (>=), Øменьше или равно (<=). Сравнение строк производится слева направо посимвольно до первого несовпадающего символа, большей считается та строка, в которой первый несовпадающий символ имеет больший код в таблице кодировки. Если строки различной длины, но в общей части символы совпадают, считается, что короткая строка меньше. Строки равны, если они одинаковой длины и соответствующие символы совпадают. Результатом является логическое значение (true или false).

Проверь себя Ø ‘строка’ = ’строки’ true Ø ‘Abc’<’abc’ true Ø ‘год’>’век’ true Ø Проверь себя Ø ‘строка’ = ’строки’ true Ø ‘Abc’<’abc’ true Ø ‘год’>’век’ true Ø ‘строка ’ = ’строка’ false

Работа со строками как с элементами массива Const n=10; var a: array [1. . Работа со строками как с элементами массива Const n=10; var a: array [1. . n] of string; b: string [20]; k, i: integer; begin {ввод массива} writeln('Введите строку'); readln(b); for i: =1 to n do if a[i] = b then Проверка строк k: =i; writeln(k); на идентичность end.

var s: string [20]; Является ли строка целым числом n, flag: integer; begin n: var s: string [20]; Является ли строка целым числом n, flag: integer; begin n: =1; flag: =0; writeln('Введите строку'); readln(s); while ((n <= length (s))and (flag = 0)) do begin if ((s[n] < ‘ 0’) or (s[n] > ‘ 9’)) then flag: =1; n: =n+1; end; if flag = 1 then writeln(‘строка не является целым числом’) else writeln(‘строка является целым числом’); end.

Стандартные функции для работы со строками Copy (S, poz, n) выделяет из строки S, Стандартные функции для работы со строками Copy (S, poz, n) выделяет из строки S, начиная с позиции poz, подстроку из n символов. Здесь S – любое строковое выражение, poz, n – целочисленные выражения. S: =‘строка символов’; S 1: = copy (S, 3, 3); Значение S ‘строка символов’ Выражение Copy(S, 3, 3) Результат (значение S 1) рок

Concat (s 1, s 2, . . . , sn) выполняет слияние строк s Concat (s 1, s 2, . . . , sn) выполняет слияние строк s 1, s 2, . . . , sn в одну строку. Выражение Concat(‘язык’, ‘Pascal’) Результат ‘язык Pascal’ S 1: =‘язык’; S 2: = ‘Pascal’; S: =Concat (S 1, S 2); Значение S 1 ‘язык’ Значение S 2 ‘Pascal’ Выражение Concat (S 1, S 2) Результат (значение S) ‘язык Pascal’

Пример действий над строками var fam: string [50]; name: string [20]; k: string [5]; Пример действий над строками var fam: string [50]; name: string [20]; k: string [5]; s: string [80]; begin writeln('Введите s : = fam + ' ' + name writeln(s); end. фамилию'); readln(fam); имя'); readln (name); класс'); readln(k); + ' ' + k +'. '; S: =Concat (fam, ' ', name, ' ', k, '. ')

Length (S) определяет текущую длину строкового выражения S. Результат – значение целого типа. S: Length (S) определяет текущую длину строкового выражения S. Результат – значение целого типа. S: = ’(a+b)*c’; n: = length(S); Значение S ‘(a+b)*c’ Выражение Length (S) Результат (значение n) 7 for i: =1 to length (s) do write (s[i]); for i: =1 to length (s) do if s[i]<> ’ ’ then write (s[i]);

Pos (S 1, S) определяет позицию первого вхождения подстроки S 1 в строку S. Pos (S 1, S) определяет позицию первого вхождения подстроки S 1 в строку S. Результат – целое число, равное номеру позиции, где находится первый символ искомой подстроки. Если вхождение подстроки не обнаружено, то результат функции будет равен 0 S: =’предложение’; k: = pos (’e’, S); Значение S ‘предложение’ Выражение Pos (‘е’, S) Pos (‘a’, S) Результат 3 0 if pos (’a’, s)= 0 then write (’такой буквы нет’);

Поиск в строке Var s, s 1: string; n: integer; begin s : = Поиск в строке Var s, s 1: string; n: integer; begin s : = 'Здесь был Вася. '; n : = Pos ( 'е', s ); if n > 0 then writeln('Буква е – это s[', n, ']') else writeln('Не нашли'); n : = Pos ( 'Вася', s ); s 1 : = Copy ( s, n, 4 ); writeln(s 1); End.

Стандартные процедуры для работы со строками Delete (S, i, n) удаляет из строки S, Стандартные процедуры для работы со строками Delete (S, i, n) удаляет из строки S, начиная с i-того, подстроку из n символов. Здесь S – строковая переменная; i, n – любые целочисленные выражения. S: = ‘abcdefg’; Delete (s, 2, 3); Исходное значение S ‘abcdefg’ Оператор процедуры Delete (s, 2, 3) Конечное значение S ‘aefg’

Insert (S 1, S, i) вставляет в строку S, начиная с позиции i, подстроку Insert (S 1, S, i) вставляет в строку S, начиная с позиции i, подстроку S 1. Здесь S 1 – любое строковое выражение, S – строковая переменная (именно ей будет присвоен результат выполнения процедуры), i – целочисленное выражение. S: = ‘рис. 2’; S 1: = ‘№’; insert(S 1, S, 6); Исходное значение S ‘рис. 2’ Оператор процедуры Конечное значение S Insert (‘№’, S, 6) Insert (S 1, S, 6) ‘рис. № 2’

Проверь себя s 1 : = 'Привет'; s 2 : = 'Вася'; s : Проверь себя s 1 : = 'Привет'; s 2 : = 'Вася'; s : = s 1 + ', ' + s 2 + '!'; s : = '123456789'; s 1 : = Copy ( s, 3, 6 ); s 2 : = Copy ( s 1, 2, 3 ); s : = '123456789'; Delete ( s, 3, 6 ); s : = '123456789'; Insert ( 'ABC', s, 3 ); Insert ( 'Q', s, 5 ); 'Привет, Вася!' '345678' '456' '129' '12 ABC 3456789' '12 ABQC 3456789'

ЗАДАЧА Ввести имя, отчество и фамилию. Преобразовать их к формату «фамилия-инициалы» . Пример: Введите ЗАДАЧА Ввести имя, отчество и фамилию. Преобразовать их к формату «фамилия-инициалы» . Пример: Введите имя, фамилию и отчество: Василий Алибабаевич Хрюндиков Результат: Хрюндиков В. А.

Процедуры преобразования типов Str (n, S) преобразует число x в строковый формат. Здесь n Процедуры преобразования типов Str (n, S) преобразует число x в строковый формат. Здесь n – любое числовое выражение, S – строковая переменная. В процедуре есть возможность задавать формат числа n. Например, str (n: 8: 3, S), где 8 – общее число знаков в числе n, а 3 – число знаков после запятой. Var n, m: real; S: string; . . . n: = (n + m)/3; Str (n: 6: 4, S); {Str (0. 0175001: 6: 4, S)} Оператор процедуры Str (n, S) Str (n: 6: 4, S) Str (3456, S) Значение S ‘ 1. 75001 E-2’ ‘ 0. 0175’ ‘ 3456’

Val (S, n, kod) преобразует строку символов S в число n (вещественое или целое Val (S, n, kod) преобразует строку символов S в число n (вещественое или целое согласно типу переменной n). Здесь S – строковое выражение, n – числовая переменная (именно туда будет помещен результат), kod – целочисленная переменная (типа integer), которая равна номеру позиции в строке S, начиная с которой произошла ошибка преобразования, если преобразование прошло без ошибок, то переменная kod равна 0. Тип n Real Integer Real Оператор процедуры Val (’ 12. 34’, n, kod) Значение n 12. 34 12 12 Значенние kod 0 3 3 if kod <> 0 then write (’в строке записано не число’);

ЗАДАЧИ « 4» : Ввести имя файла (возможно, без расширения) и изменить его расширение ЗАДАЧИ « 4» : Ввести имя файла (возможно, без расширения) и изменить его расширение на «. exe» . Пример: Введите имя файла: qqq. com Результат: qqq. exe

ЗАДАЧИ « 5» : Ввести путь к файлу и «разобрать» его, выводя каждую вложенную ЗАДАЧИ « 5» : Ввести путь к файлу и «разобрать» его, выводя каждую вложенную папку с новой строки Пример: Введите путь к файлу: C: Мои документы10 -БВасяqq. exe Результат: C: Мои документы 10 -Б Вася qq. exe

ЗАДАЧИ Дана строка, в которой имеется несколько пар круглых скобок (вложенных скобок нет). Создать ЗАДАЧИ Дана строка, в которой имеется несколько пар круглых скобок (вложенных скобок нет). Создать новую строку, удалив все символы внутри скобок и сами скобки. Подсчитать, сколько скобок было в исходной строке. var k, i: integer; s: string; begin readln (s); k: =0; i: =1; for i: =1 to length (s) do if s[i]='(' then begin k: =k+1; while s[i]<> ')' do delete (s, i, 1); end ; writeln (k: 5); writeln (s) end.