1 Программирование на языке Паскаль Часть II Символьные строки.

Презентация:



Advertisements
Похожие презентации
К. Поляков, Программирование на алгоритмическом языке. Часть II Тема 4. Символьные строки.
Advertisements

Программирование на языке Паскаль Символьные строки.
К.Ю. Поляков, Е.А. Ерёмин, 2013 Программирование на языке Паскаль § 66. Символьные строки 1.
Основы алгоритмизации и программирования ABC PASCAL CHAR LENGTH COPY DELETE INSERT Сикор Ольга, 10 класс, гимназия 1.
Познакомиться с основными принципами работы с символьными величинами Научиться применять процедуры и функции для их обработки.
Строковый тип в Паскаль. Составление программ.. Какой тип данных в Паскале описывает текстовые данные? Какой тип данных описывает один символ? Как можно.
Задача Разбить предложение по словам. В предложении могут быть знаки «.», «!», «?» и «,»
Шешель Анжелика. Значения: Символьная величина – 1 символ (буква, цифра, знак) Строковая величина – строка символов.
Строки в Pascal
Работа со строковыми типами данных. Строка – упорядоченная последовательность символов. Строковая константа – последовательность символов, заключенных.
Обработка символьных величин. Цели урока Познакомиться с основными принципами работы с символьными величинами Познакомиться с основными принципами работы.
Основные принципы работы с символьными величинами Шутилина Л.А.,
Понятие строки. Операции со строковыми величинами. Стандартные процедуры и функции обработки строковых величин. Простые алгоритмы работы со строками на.
Символьные переменные. Символьные переменные. © «МОУ СОШ 13»
Обработка символов строки. Дано слово. Переставить первые три и последние три буквы, сохранив порядок их следования.
Символьные переменные, операции с символьными переменными.
Символьный и строковый тип данных. ТИП ДАННЫХ Целый: 1. Целый: Integer ( …32 768), LongInt ( … ), Word (0…65535) Логический:
1 Строковый тип данных Строка – это последовательность символов определенной длины (от 0 до 255).
Решение задач. Вариант 1 1. Чему равна максимальная длина строки? 2. При помощи операций копирования и склейки из слова «жемчужина» составить слова: «чужие»,«муж».
Символьные и строковые переменные. Общие понятия Для того чтобы ЭВМ могла обрабатывать тексты, она должна уметь оперировать не только с числами, но и.
Транксрипт:

1 Программирование на языке Паскаль Часть II Символьные строки

2 Чем плох массив символов? var B: array[1..N] of char; Это массив символов: каждый символ – отдельный объект; массив имеет длину N, которая задана при объявлении Что нужно: обрабатывать последовательность символов как единое целое строка должна иметь переменную длину

3 Символьные строки Привет!¤¤¤…¤¤¤ длина строки рабочая часть s[1] s[2] s[3] s[4] var s: string; var s: string[20]; 20 1 Длина строки: n := length ( s ); var i: integer; В Delphi это ограничение снято! !

4 Символьные строки Задача: ввести строку с клавиатуры и заменить все буквы "а" на буквы "б". program qq; var s: string; i: integer; begin writeln('Введите строку'); readln(s); for i:=1 to Length(s) do if s[i] = 'а' then s[i] := 'б'; writeln(s); end. program qq; var s: string; i: integer; begin writeln('Введите строку'); readln(s); for i:=1 to Length(s) do if s[i] = 'а' then s[i] := 'б'; writeln(s); end. readln(s); writeln(s); Length(s) ввод строки длина строки вывод строки

5 Задания 1: Ввести символьную строку и заменить все буквы "а" на буквы "б" и наоборот, как заглавные, так и строчные. Пример: Введите строку: ааббссААББСС Результат: ббаассББААСС 2: Ввести символьную строку и проверить, является ли она палиндромом (палиндром читается одинаково в обоих направлениях). Пример: Пример: Введите строку: Введите строку: АБВГДЕ КАЗАК Результат: Результат: Не палиндром. Палиндром.

program qq; var s: string; i: integer; begin writeln('Введите строку'); readln(s); for i:=1 to Length(s) do begin if s[i] = 'а' then s[i] := 'б' else if s[i] = 'А' then s[i] := 'Б' else if s[i] = 'б' then s[i] := 'а' else if s[i] = 'Б' then s[i] := 'А'; end; writeln(s); end. Решение задания 1

Решение задания 2 program qq; var s: string; i,j,k: integer; begin writeln(' Введите строку '); readln(s); k:=0; j:=Length(s); for i:=1 to Length(s) do begin if s[i]=s[j] then k:=k+1; j:=j-1; end; writeln('k=',k); if k=Length(s) then writeln('палиндром') else writeln('не палиндром '); end.

8 Операции со строками Объединение: добавить одну строку в конец другой. Запись нового значения: var s, s1, s2: string; s := 'Вася'; s1 := 'Привет'; s2 := 'Вася'; s := s1 + ', ' + s2 + '!'; s1 := 'Привет'; s2 := 'Вася'; s := s1 + ', ' + s2 + '!'; 'Привет, Вася!' Подстрока: выделить часть строки в другую строку. s := ' '; s1 := Copy ( s, 3, 6 ); s2 := Copy ( s1, 2, 3 ); s := ' '; s1 := Copy ( s, 3, 6 ); s2 := Copy ( s1, 2, 3 ); '345678' '456' с 3-его символа 6 штук

9 Удаление и вставка Удаление части строки: Вставка в строку: s := ' '; Delete ( s, 3, 6 ); s := ' '; Delete ( s, 3, 6 ); с 3-его символа 6 штук строка меняется! строка меняется! ' ' '129' s := ' '; Insert ( 'ABC', s, 3 ); Insert ( 'Q', s, 5 ); s := ' '; Insert ( 'ABC', s, 3 ); Insert ( 'Q', s, 5 ); куда вставляем что вставляем начиная с 3-его символа '12ABC ' '12ABQC ' Удаление и вставка

10 Поиск в строке Поиск в строке: s := 'Здесь был Вася.'; n := Pos ( 'е', s ); if n > 0 then writeln('Буква е – это s[', n, ']') else writeln('Не нашли'); n := Pos ( 'Вася', s ); s1 := Copy ( s, n, 4 ); s := 'Здесь был Вася.'; n := Pos ( 'е', s ); if n > 0 then writeln('Буква е – это s[', n, ']') else writeln('Не нашли'); n := Pos ( 'Вася', s ); s1 := Copy ( s, n, 4 ); s[3] 3 3 n = 11 Особенности: функция возвращает номер символа, с которого начинается образец в строке если слова нет, возвращается 0 поиск с начала (находится первое слово) var n: integer;

11 Примеры s := 'Вася Петя Митя'; n := Pos ( 'Петя', s ); Delete ( s, n, 4 ); Insert ( 'Лена', s, n ); s := 'Вася Петя Митя'; n := Pos ( 'Петя', s ); Delete ( s, n, 4 ); Insert ( 'Лена', s, n ); 'Вася Лена Митя' s := 'Вася Петя Митя'; n := length ( s ); s1 := Copy ( s, 1, 4 ); s2 := Copy ( s, 11, 4 ); s3 := Copy ( s, 6, 4 ); s := s3 + s1 + s2; n := length ( s ); s := 'Вася Петя Митя'; n := length ( s ); s1 := Copy ( s, 1, 4 ); s2 := Copy ( s, 11, 4 ); s3 := Copy ( s, 6, 4 ); s := s3 + s1 + s2; n := length ( s ); 'Вася Митя' 14 'Вася' 'Митя' 'Петя' 'ПетяВасяМитя'

12 Пример решения задачи Задача: Ввести имя, отчество и фамилию. Преобразовать их к формату "фамилия-инициалы". Пример: Введите имя, фамилию и отчество: Василий Алибабаевич Хрюндиков Результат: Хрюндиков В.А. Алгоритм: найти первый пробел и выделить имя удалить имя с пробелом из основной строки найти первый пробел и выделить отчество удалить отчество с пробелом из основной строки "сцепить" фамилию, первые буквы имени и фамилии, точки, пробелы…

13 Программа program qq; var s, name, otch: string; n: integer; begin writeln('Введите имя, отчество и фамилию'); readln(s); n := Pos(' ', s); name := Copy(s, 1, n-1); { вырезать имя } Delete(s, 1, n); n := Pos(' ', s); otch := Copy(s, 1, n-1); { вырезать отчество } Delete(s, 1, n); { осталась фамилия } s := s + ' ' + name[1] + '.' + otch[1] + '.'; writeln(s); end. program qq; var s, name, otch: string; n: integer; begin writeln('Введите имя, отчество и фамилию'); readln(s); n := Pos(' ', s); name := Copy(s, 1, n-1); { вырезать имя } Delete(s, 1, n); n := Pos(' ', s); otch := Copy(s, 1, n-1); { вырезать отчество } Delete(s, 1, n); { осталась фамилия } s := s + ' ' + name[1] + '.' + otch[1] + '.'; writeln(s); end.

14 Задания 3: Ввести имя файла (возможно, без расширения) и изменить его расширение на ".exe". Пример: Введите имя файла: Введите имя файла: qqq qqq.com Результат: Результат: qqq.exe qqq.exe 4: Ввести путь к файлу и "разобрать" его, выводя каждую вложенную папку с новой строки Пример: Введите путь к файлу: C:\Мои документы\10-Б\Вася\qq.exe Результат: C: Мои документы 10-Б Вася qq.exe

var s : string; n,k: integer; begin writeln( ' Введите имя файла'); readln(s); k:=length(s); n := Pos('.', s); if n=0 then Insert('.exe',s,k+1) else begin Delete(s, n+1, k-n);Insert('exe',s,n+1); end; writeln(s); end. Решение задания 3

Решение задания 4 uses crt; var s,s1: string; n: integer; begin Writeln('Введите имя файла и путь доступа к нему'); readln(s); n:=1; s1:=s; while n0 do begin n:=pos('\',s); s1:=copy(s1,1,n-1); writeln(s1); delete(s,1,n); s1:=s; end; writeln(s1); end.