Использование строк в паскаль. Презентация на тему Строки в Pascal Строковые переменные в паскале презентация

Темы


























Включить эффекты

1 из 26

Отключить эффекты

Смотреть похожие

Код для вставки

ВКонтакте

Одноклассники

Телеграм

Рецензии

Добавить свою рецензию


Слайд 1

Слайд 2

Строка - это массив символов, т.е. элементов типа char. В Паскале строке соответствует тип данных String. varИмя: string [Длина]; Если длина не указана, выделяется память под строку до 255 символов. Теория 1 var s1:string; строка 255 символов var s2:string; строка 20 символов

Слайд 3

Правила: строки равны только при одинаковом наборе символов и одинаковой длине; Например:"ABC"="ABC" и "ABC"≠"abc" иначе происходит поэлементное сравнение символов по их кодам: "0"

Слайд 4

Теория 3 Соединение двух строк. s1:="2011" + " год"; Writeln(s1); s1:="10"; s2:="класс"; s3:=s1+" "+s2; Writeln(s3);

Слайд 5

ФункцияLength Функция Length(S) определяет текущую длину строки S. Результат - значение целого типа. Теория 4 PROGRAM Dlina_1; VAR S: STRING; n:INTEGER; BEGIN Writeln(введитеслово ") ; Readln(S); n:= Length (S) ; Writeln(‘введитеслово ", n:5 ," букв.."); END. Записываем длину строки в переменную целого типа PROGRAM Dlina_2; VAR S: STRING; BEGIN Writeln(’введитеслово’) ; Readln(S); Writeln(’слово состоит из ’, Length (S),’букв. ’); END. Выводим на экран длину строки, как результат выполнения функции Задача 1.Составить программу подсчитывающую количество букв в слове.

Слайд 6

Uses crt; var a,b:string; m,n:Integer; Begin Clrscr; Writeln("ВВеди первую строку ");Readln(a); Writeln("ВВеди вторую строку ");Readln(b); m:=Length(a); n:=Length(b); if (m=n) then writeln("Строкиравны"); if (m>n) then writeln("Перваябольше"); if (m

Слайд 7

Функция Сору Функция Сору(S, P, N) выделяет из строки S подстроку длиной N символов, начиная с позиции P. Здесь N и P – целочисленные выражения. Теория 6 В фразе МАМА МЫЛА РАМУ слово РАМУ начинается с 11 буквы и состоит из 4 букв COPY(s1,11,4)

Слайд 8

Задача 3. Program n3_1; Uses crt; var a,b,c,d:string; Begin Clrscr; a:="информатика"; b:=""; c:=copy(a,8,1); d:=copy(a,4,2); b:=c+d+c; writeln(b); End. Задача на составление строк 7 Используем функцию работы с символьными переменными COPY Второй вариант: Program n3_2; Uses crt; var a,b:string; Begin Clrscr; a:=‘информатика"; b:=a+a+a+a; writeln(b); End. Используем определение строки как массива символов

Слайд 9

Преобразование типов 8 Функция STR Str(x, S) преобразует число x в строковый формат. Где x – любое числовое выражение, S – строковая переменная. Задача 4 . Составьте программу которая выводит первую и последнюю цифру натурального числа, введенного с клавиатуры. PROGRAM Primer; uses Crt; VAR S: STRING; n:INTEGER; BEGIN Write("Введи число ");readln(n); Str(n,S); Writeln("Первая цифра -",S); Writeln("Последняя цифра - ",S); END. Преобразуем натуральное число в строку

Слайд 10

Процедура val позволяет преобразовать цифровые символы (изображение числа) в число. В общем виде обращение к процедуре выглядит так: VAL (Строка, Число, Код) ; где Строка – строковая константа или переменная, содержащая изображение числа; Число – переменная целого или дробного типа, которой должно быть присвоено значение Код – возвращаемый процедурой код ошибки (целое число) Преобразование типов 9 Процедура VAL

Слайд 11

Преобразование типов 10 BEGIN s1:="123456789"; val(s1,n,code); Writeln(n); END. BEGIN s1:="123456789ABCDE"; val(s1,n,code); Writeln(n); END.

Слайд 12

s1:="ABCDE123456789"; val(s1,n,code); Writeln(n); В PascalABC есть более развитый арсенал преобразованийкак в DELPHI: S:=IntToStr(N) - преобразует целое число к строке; n:=StrToInt(S)- преобразует строку в целое число S:=FloatToStr(r)- преобразует вещественное число к строке R:=StrToFloat(s) преобразует строку в вещественное число. Если преобразование невозможно, то возникает ошибка времени выполнения Преобразование типов 11

Слайд 13

Преобразование типов 12 Задача 5.

Слайд 14

Символы и их коды 13 Функции ORD и CHR Функция Ord(S) – определяет порядковый номер символа. Функция Chr(i) – определяет символ с порядковым номером i По номеру 255 выводим символ из кодовой таблицы Я

Слайд 15

Символы и их коды 14 Задача 6.Составьте программу, которая по символу введенному с клавиатуры, выводит его номер в кодовой таблице. PROGRAM Primer; uses Crt; VAR S: char; n,code:INTEGER; BEGIN Write("Введи символ ");readln(s); Writeln("Символ ", s ," имеет код -",ord(s)); END. Функция ORD работает только символьным типом данных

Слайд 16

Задача 7. Program n5; Uses Crt; Var s:string; i,k:integer; begin ClrScr; Write("ВВедистроку "); readln(s); k:=0; for i:=1 to length(s) do if (s[i]="А") then k:=k+1; writeln("Буква А встречается = ", k:8," раз"); end. Перебираем от 1 до последней буквы Если на i-ом месте стоит А увеличиваем К на 1 Подсчет символов в строке 15

Слайд 17

Замечание 16 for i:=1 to length(s) dobegin if (s[i]=…… if (s[i]=…… end; Замечание. Если требуется поиск нескольких символов в строке, то условия заключаем в программные скобки BEGIN … END

Слайд 18

Подсчет символов в строке 17 Начало Ввод S i,1,length(s) Si ="A" К=К+1 Вывод К Конец Да Нет Блок-схема к задаче подсчета букв А в строке К=0

Слайд 19

Замена символов в строке 18 Задача 8.Program n6; Uses Crt; Var s:string; i:integer; begin ClrScr; Write("ВВедистроку "); readln(s); for i:=1 to length(s)do if (s[i]="A") then s[i]:="O"; writeln(s); end. Перебираем от 1 до последней буквы Если на i-ом месте стоит А ставим на i-е место О.

Слайд 20

Замена символов в строке 19 Начало Ввод S i,1,length(s) Si ="A" Si ="O" Вывод S Конец Да Нет Блок-схема к задаче замен буквы А на О

Слайд 21

Задача 9 Удалить из строки введенной с клавиатуры все буквы R(латинские, заглавные). Program n7; Uses Crt; var a,b:String; i:integer; begin ClrScr; Write("ВВедистроку = ");readln(a); b:=""; for i:=1 to length(a) doif (a[i]‘R") then b:=b+a[i]; a:=b; writeln(a); end. Перебираем от 1 до последней буквы Подготавливаем дополнительную переменную Если на i-ом месте не стоит R то прибавляем эту букву к тому, что есть в B То, что получилось в В перемещаем обратно в А Удаление символов из строки 20

Слайд 22

Удаление символов из строки 21 Начало Ввод A i,1,length(A) Ai "R" B=B+ Ai Вывод А Конец Да Нет Блок-схема к задаче удаления букв R из строки B="" A=B

Слайд 23

Вложенные условия. 22 begin clRscr; Readln(s); for i:=1 to length(s) do if (s[i]="а") or (s[i]="б") then if (s[i]="а") then s[i]:="б" else s[i]:="а"; writeln(s); end. Задача 10. Из всей строки нам нужно выбрать только А и Б И только после осуществлять замену

Слайд 24

Вложенные условия 23 Начало Ввод S i, 1, length(S) Si ="а" Si ="б" Si ="а" Вывод S Конец Si ="а" или Si ="б" Да Нет Да Нет Блок-схема к задаче замены А на Б и наоборот

Слайд 25

Вложенные циклы 24 begin ClrScr; Write("ВВедистроку "); readln(s); s1:=",.;:"!?-"; for i:=1 to length(s1) do begin k:=0; for j:=1 to length(s) do if (s[j]=s1[i]) then k:=k+1; if (k0) then writeln(s1[i]," - ",k:5," раз"); end; end. Задача 11. Внешний цикл, осуществляющий перебор знаков записанных в S1 Тело внешнего цикла содержит цикл, отвечающий за перебор символов введенной строки

Слайд 26

Вложенные циклы 25 Начало Ввод S i, 1, length(S1) s1=",.;:"!?-" K=0 j, 1, length(S) Sj = S1i Да Нет K=K+1 K0 Вывод S1i,K Нет Да Конец Блок-схема к задаче подсчета знаков препинания

Посмотреть все слайды

Конспект

�PAGE � �PAGE �1�

Блок 1.

Теория.

Слайд 1

Слайд 2

Слайд 3.

Слайд 4

Слайд 5. Разобрано решение задачи:

Слайд 6.

Слайд 7.

Составить программу осуществляющую вырезку из слова ИНФОРМАТИКА букв так, что бы из них получилось слово ТОРТ.

Блок 2.

Дано строка символов а1+а2=. Где 1<=а1 и а2<=9. Составить программу, вычисляющую это выражение. Измените программу так, что бы вместо знака «+» можно было писать « - », « * », « / ».

Задачи для дополнительного решения:

<=аi<=9). Составить программу, вычисляющую эту сумму.

<=аi<=9). Составить программу, вычисляющую эту алгебраическую сумму.

Блок 3.

Блок 4.

Дана строка символов. Определить сколько раз в ней встречается буква А (русская).

Задачи для дополнительного решения:

Дана строка символов. Определить сколько раз в ней встречается буква А (русская).

Блок 5.

Дана строка символов. Заменить в ней все буквы А на букву О.

Задачи для дополнительного решения:

Блок 6.

Задачи для дополнительного решения:

Блок 7.

В заданном тексте везде букву "а" заменить на букву "б", а букву "б" - на букву "а".

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

Задачи для дополнительного решения:

�PAGE � �PAGE �1�

Описание к презентации «Строки в языке Pascal»

Данная презентация может быть использована при изучении темы «Строки в языке программирования Pascal» при обучении программированию на языке Pascal. В ней рассмотрены определение и описание строковой переменной, функции работы со строками, а также разобраны несколько типовых задач при работе со строками. Презентация содержит 24 слайда, объединенных в 7 блоков.

Краткая навигация по слайдам и дополнительные задачи для самостоятельного решения учащимися:

Блок 1.

Теория.

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

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

Слайд 3. Показаны примеры объединения нескольких строк в одну.

Слайд 4 . Дано определение функции Length(). И разобраны два решения задачи:

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

Первый способ при помощи операции присваивания количество символов в строке присваивается переменной целого типа, и она выводится на экран. Во втором способе функция Length() вставлена непосредственно в оператор Writeln.

Слайд 5. Разобрано решение задачи:

Сравнить длину двух строк введенных с клавиатуры.

В ней необходимо определить длину двух строк и при помощи оператора ветвления сравнивать длины этих строк.

Слайд 6. Дано определение функции Copy(). При помощи скриншота показан пример работы данной функции с необходимыми комментариями.

Слайд 7. Показаны два способа решения задачи:

Составить программу осуществляющую вырезку из слова ИНФОРМАТИКА букв так, что бы из них получилось слово ТОРТ.

В первом случае вырезка производится при помощи функции Copy, а во втором используя представление строки как массива символов.

Задачи для дополнительного решения:

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

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

С клавиатуры вводятся две строки, определить, какая из них длиннее и насколько, вывести на экран соответствующее сообщение.

С клавиатуры вводится строка символов, вывести на экран символ, стоящий на k – ом месте. k – вводится с клавиатуры.

С клавиатуры вводится слово, верно ли, что оно начинается и заканчивается на одну и туже букву.

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

Получите из слова "ИНТЕГРАЛ" слова "ГАНТЕЛИ", "РЕНТГЕН", "ТИГР", "АГЕНТ".

Составить программу которая проверяет правописание приставок раз- и рас- в слове введенном с клавиатуры и если необходимо исправляет ошибку.

Блок 2.

Функции преобразования типов.

Слайд 8. Дано описание процедуры Srt(). Разбирается решение задачи:

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

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

Слайд 9. Дано определение процедуры Val().

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

Слайд 11. Показаны функции для преобразования числовых и символьных типов в системе программирования PascalABC. Это может быть очень полезно если в дальнейшем планируется переход на изучение Lazarus или Delphi.

Слайд 12. Показано решение задачи:

Дано строка символов а1+а2=. Где 1<=а1 и а2<=9. Составить программу, вычисляющую это выражение. Измените программу так, что бы вместо знака «+» можно было писать « - », « * », « / ».

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

Задачи для дополнительного решения:

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

Дана строка, изображающая целое положительное число. Найти сумму цифр этого числа.

Дан текст имеющий вид а1+а2 +а3+…+аi. Где аi – целые числа (0<=аi<=9). Составить программу, вычисляющую эту сумму.

Дан текст имеющий вид а1 - а2 + а3 - …+аi. Где аi – целые числа (0<=аi<=9). Составить программу, вычисляющую эту алгебраическую сумму.

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

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

Блок 3.

Функции работы с кодами символов.

Слайд 13. Дано определение функций ORD и CHR. Показан скриншот программы иллюстрирующий работу функции Chr.

Слайд 14. Показано решение задачи:

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

Здесь необходимо сделать замечание, что функция Ord работает только с символьным типом данных (char). Так как очень часто ученики не понимают разницы между символьным и строковым типом.

Блок 4.

Задачи на подсчет чего либо в строке.

Слайд 15. Показано решение задачи:

Дана строка символов. Определить сколько раз в ней встречается буква А (русская).

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

Слайд 16. Содержит напоминание, что если требуется поиск нескольких символов в строке, то условия заключаем в программные скобки BEGIN … END

Слайд 17. Показана блок-схема к задаче из слайда 15.

Задачи для дополнительного решения:

Дана строка символов. Определить сколько раз в ней встречается буква А (русская).

Дана строка представляющая собой алгебраическое выражение Проверить в нем парность скобок. Результат вывести на экран.

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

Дан текст. Определить количество слов в предложении.

Дан текст. Определить каких букв М или Н в нем больше.

Дан текст. Определить сколько слов в этом тексте начинается на букву А.

Дана строка символов, в которой есть двоеточие (:). Определить, сколько символов ему предшествует.

Дана строка символов. Определить сколько раз в нее входит группа букв АВС.

Дан текст. В нем есть, как минимум две буквы К. Определите порядковые номера первой и последней буквы К.

Дана текст. Определить какая из букв С или Т встретится раньше.

Дан текст. Определить количество букв Н, предшествующих первой запятой в предложении.

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

Блок 5.

Задачи на изменение символов в строке, без изменения ее длины.

Слайд 18. Показано решение задачи:

Дана строка символов. Заменить в ней все буквы А на букву О.

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

Слайд 19. Показана блок-схема к задаче из слайда 18.

Задачи для дополнительного решения:

Дана строка символов. Заменить все буквы стоящие на четных местах на букву О.

Дана строка символов. Заменить в заданном тексте буквосочетание "min" на "max".

Дана строка символов. Заменить в ней все пробелы на знак «_».

Найдите первую и последнюю буквы К в тексте введенном с клавиатуры. И замените их «*».

Составить программу, исправляющую правописание «ЖИ» и «ШИ» в слове, введенном с клавиатуры.

Блок 6.

Задачи связанные с изменением длинны строки.

Слайд 20. Показано решение задачи:

Удалить из строки введенной с клавиатуры все буквы R (латинские, заглавные).

Данная задача показывает изменение строки с изменением ее длины.

Слайд 21. Показана блок-схема к задаче из слайда 20.

Задачи для дополнительного решения:

Удалить из строки введенной с клавиатуры все буквы А (латинские, заглавные).

Дано слово. Проверить, является ли оно перевертышем. Т. е. читается одинаково с конца и начала. (Например: АННА, ШАЛАШ.)

В заданном слове каждую букву "б" заменить буквосочетанием "ку".

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

Для оформления заголовков и логически важных слов, символы текста чередуют с пробелами. Напишите программу, которая выполняет такую операцию.

Из данного текста удалить все буквы «С» которые предшествуют букве «Т».

После каждой буквы П вставить три знака восклицания «!!!».

Блок 7.

Задачи с вложенными ветвлениями и циклами.

Слайд 22. Показано решение задачи:

В заданном тексте везде букву "а" заменить на букву "б", а букву "б" - на букву "а".

Прямое решение этой задачи «в лоб» не дает результата. Здесь требуется выделить только нужные буквы, что бы не изменялись остальные. А затем в зависимости от того какая буква найдена производить замену, используя полное условие.

Слайд 23. Показана блок-схема к задаче из слайда 22.

Слайд 24. Показано решение задачи:

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

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

Задачи для дополнительного решения:

Дана строка символов (русская). Определить количество гласных букв в этой строке.

Дана строка символов (английская). Определить какие и сколько гласных букв содержит строка.

Дана строка символов. Определить каких символов больше гласных или согласных.

Даны две строки А и В. Определить, можно ли из букв строки А составить строку В. Причем каждую букву можно использовать один раз. Буквы можно переставлять. (Например: из ИНТЕГРАЛ можно получить АГЕНТ, а ГРАФ нельзя).

Дан текст. Определить чего в нем больше цифр или букв.

Даны две строки. Подсчитайте и выведите на экран количество общих букв. (Букв встречающихся в первой и второй строке).

Из заданного текста выбрать и вывести на экран те символы, которые встречаются в нём ровно один раз.

Для предупреждения о провале операции Юстасом был придуман сле​дующий способ оповещения. Он отправляет телеграмму, в тексте которой встречаются символы "б", "е","д", "а", обязательно в таком порядке, но не обязательно подряд. Составить программу, позволяющую определить, является ли присланный текст оповещением о провале, или нет.

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

На мой взгляд самыми удачными задачниками по программированию являются:

Сборник задач по программированию. 2-е издание. Автор Д.М. Златопольский. Изданный в СПб «БХВ-Петербург» в 2007 году.

Электронная версия задачника Programming Taskbook Версия 4.6. Автор М.Э.Абрамян. Распространяемый с системой программирования Pascal ABC.

В них представлены задачи по всем темам курса программирования.

Мною на основе этих задачников и некоторых других источников сделан собственный мини задачник с делением задач на три группы сложности А,В и С.

http://privples.iv-edu.ru/informatica/1/Mater/SBORNIK_ZADAS.doc

Скачать конспект

Чтобы пользоваться предварительным просмотром презентаций создайте себе аккаунт (учетную запись) Google и войдите в него: https://accounts.google.com


Подписи к слайдам:

Текстовый и символьный типы данных Паскаль Презентацию подготовила Учитель информатики Карева Татьяна Петровна МБОУ Гимназия №6 Г. Междуреченска Кемеровской области

Вычислительные машины имеют дело не только с числами. Едва ли не больше времени они бывают заняты обработкой текста. В Паскале для этого есть специальный тип данных, который называется CHAR (от слова character – символ). Тип CHAR (символьный или строковый или литерный). Его значениями являются отдельные символы: буквы, цифры, знаки. Символьные константы заключаются в кавычки, например, ‘ A ’, ’ B ’, ’ C ’, ‘4’,‘7’, ‘ ‘(пробел). Символьные переменные описываются предложением Var имя переменной: char ;

Символьные значения можно вводить и выводить, присваивать, сравнивать. Ниже приведен пример, где выполняются все эти действия. Var x , y: char ; Begin Write(‘ Введите символ ‘); Readln (x); Y:=’A’; If x

Сравнивать символы можно благодаря тому, что в машинной памяти они хранятся в виде целых чисел (кодов символов). Из двух символов большим считается тот, код которого больше. Символы упорядочены следующим образом: ‘ A ’=,.

Стандартные символьные функции. В Паскале имеются стандартные символьные функции: CHR (N) – возвращает в программу символ с кодом N , ORD (S) – возвращает код символа S , PRED (S) –возвращает предыдущий символ SUCC (S) – возвращает следующий символ ПРИМЕРЫ: CHR (128) = Б ORD (‘:’) = 58 PRED(‘ Б ’) = А SUCC(‘ Г ’) = Д

Каждый символ имеет свой уникальный двоичный код. Коды всех символов сведены в таблицу. Первая половина таблицы стала международным стандартом, который называется ASCII – American Standard Code Information Interchange (читается « аски код») в ней кроме прочего содержится латинский алфавит, вторая имеет разные варианты для разных языков. Кириллица (русский алфавит) имеет несколько стандартов. В Паскале используется стандарт КОИ-8.

ПРИМЕР использования переменной символьного типа. Составить программу, по которой компьютер многократно вычисляет сумму А+В при различных значениях А и В. в конце каждого этапа появляется запрос о продолжении или прекращении вычислений: «Завершить программу?(Д/Н)». Var A , B: real ; C: char; Begin repeat Write(‘ Введите два числа ‘); Readln (a,b); Writeln (a + b:0:2); Writeln (‘Завершить программу?(Д/Н)’); Readln (с); Until с=’Д’; {программа завершит работу если будет введено Д} Readln End .

Тренировочные задания. 1 . Что вернет функция CHR (ORD (X))? 2. Определить значения следующих функций: CHR(68) ORD(‘d’) PRED(1) SUCC(‘ Я ’) 3. Составить программу, по которой компьютер находит произведение нечетных чисел, начиная с единицы, и до тех пор, пока на вопрос, задаваемый после каждого шага вычислений: «Продолжить вычисления? (Д/Н)», отвечают ‘Д’.

Для обработки более крупных текстовых единиц - строк введен тип данных, который называется STRING (строка). Значениями этого типа являются строки любых символов длиной до 255. Переменные строки должны быть описаны предложением: VAR имя: STRING Строки можно присваивать, сравнивать, вводить, выводить и соединять. Соединение обозначается знаком "+". Вот примеры некоторых операций сравнения над строками: "стол"

Среди всевозможных значений строк есть пустая строка. Она изображается двумя апострофами (одинарными кавычками), между которыми ничего нет. Чтобы ввести этот символ в состав строки, надо повторить его дважды. Например, оператор write (" об""явление ") выведет на экран: об"явление. Программисту доступны отдельные символы строковой переменной, для этого кроме имени переменной надо указать порядковый номер символа в строке. Например, если описана переменная X:STRING, то X - это первый символ строки, X - второй и т.д. У X особая роль - хранить длину строки. Значением X является символ, код которого равен количеству символов в строке. Но для определения длины строковой переменной обычно используется функция LENGTH(строковая переменная). Например, если N:=LENGTH(x); - N присвоится значение равное числу символов в строке.

При описании строковой переменной мы можем ограничить длину строки, указав ее максимально возможный размер, тогда в строке будет храниться только указанное число символов. Var a,b:string ; begin write(" введите слово "); readln (a); write(a); readln end. Если при выполнении этой программы ввести слово КУКУРУЗА, то программа выведет КУКУ.

ЗАПОМНИТЕ. Если при выполнении программы необходимо ввести значение для нескольких строковых переменных, для каждой из них должен быть указан свой оператор ввода READLN. Например, Var a,b,c:string ; begin readln (a); readln (b); readln (c); write(a+b+c); readln end. Проверьте, что произойдет, если записать READLN(a,b,c); или READ(a,b,c).

Пример 1. Составить программу определяющую, какая из двух фамилий длиннее. Фамилии имеют разную длину. Var a,b:string ; begin readln (a); readln (b); if length(a)>length(b) then write(a) else write(b); readln end.

Пример 2. Даны два слова. Составить программу определяющую верно ли, что первое слово начинается на ту же букву, которой оканчивается второе слово. Var x,y:byte ; a,b:string ; begin readln (a); readln (b); x:=length(b); {определяем длину слова b, чтобы узнать номер последнего символа} if a=b[x] then write ("верно") else write ("неверно"); readln end .

Тренировочные задания. 1. Дано название города. Определить, четно или не четно количество символов в нем. 2. Дано слово. Вывести на экран его третий символ и дважды его последний символ. 3. Дано слово. Верно ли, что оно начинается и оканчивается на одну и ту же букву? 4. Дано слово. Получить и вывести на экран буквосочетание, состоящее из его третьего и последнего символа. 5. Составить программу, которая запрашивает название футбольной команды и повторяет его на экране со словами: "Это чемпион!".

Для работы со строковыми переменными в Паскале существует набор стандартных процедур и функций. Их применение упрощает решение задач. Хочу напомнить что результат выполнения функции должен быть запомнен в переменной соответствующего типа, если конечно она, функция, не является элементом выражения. Функция копирования строки или ее части. S:=COPY(строка, позиция, N); Функция копирования называется также "вырезкой". Результатом выполнения функции будет часть строки начиная с указанной позиции длиной N.

Пример: Дано предложение. Определить порядковый номер первой встреченной буквы "к". Если такой буквы нет, сообщить об этом. Var x: integer; a: string; begin write(" Введите предложение "); readln (a); x:=pos(" к ",a); if x=0 then writeln (" Такой буквы нет ") else writeln (x); readln end.

Процедура удаления части строки DELETE(строка, начальный номер, количество символов) Удаляет из исходной строки указанное количество символов. Пример: Дано слово, состоящее из четного числа букв. Вывести на экран его первую половину. Var i,x:byte ; a,p:string ; begin repeat write ("Введите слово из четного числа букв"); readln (a); x:=length(a); {определяем длину слова} until (x mod 2 = 0); x:= x div 2; {применяем целочисленное деление} delete (a,x+1,x); write (а); readln end .

Процедура вставки подстроки в строку INSERT(строка1 , строка2 , позиция); Строка1 вставляется в строку2 начиная с указанной позиции. Тренировочные задания. 1. Дано предложение. Определить число вхождений в него некоторого символа. 2. Дано предложение. Заменить в нем все вхождения буквосочетания "ах" на "ух". 3. Дано слово. Проверить, является ли оно "перевертышем", т.е. читается одинаково как с начала, так и с конца. 4. Дано слово: a. удалить из него первую из букв "о", если такая буква есть; b. удалить из него последнюю из букв "т", если такая буква есть. 5. Дано предложение. Удалить из него все буквы "с".





Синтаксис: var s: string[n]; var s1: string; n - максимально возможная длина строки - целое число в диапазоне Если этот параметр опущен, то по умолчанию он принимается равным 255.


Строковые константы записываются как последовательности символов, ограниченные апострофами. S: = "Текстовая строка"


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


В Паскаль имеется простой доступ к отдельным символам строковой переменной: i-й символ переменной st записывается как st[i]. Например, если st - это "Строка", то st - это "С", st - это "т", st - "р" и так далее.


Над строковыми данными определена операция слияния (конкантенации), обозначаемая знаком +. Например: a:= "Turbo"; b:= "Pascal"; c:= a + b; В этом примере переменная c приобретет значение "TurboPascal".


Процедуры и функции для работы со строками 1)n:= length("Pascal"); {n будет равно 6} 2) s:= "Система Turbo Pascal"; s2:= copy(s, 1, 7); {s2 будет равно "Система"} s3:= copy(s, 9, 5); {s3 будет равно "Turbo"} s4:= copy(s, 15, 6); {s4 будет равно "Pascal"}

Тема: Паскаль «строковые переменные». Обработка строк текста

  • МБОУ «Моргаушская СОШ»
  • Учитель информатики I категории Павлинова Р.М.
Типы данных: char – литерный или символьный тип; string – строковый тип или просто строка.
  • Символьный тип
  • Значением переменных символьного типа char является один символ. Каждому символу соответствует код символа – целое число в диапазоне от 0 до 255.
  • chr(x) – возвращает значение символа по его коду;
  • ord(cimvol) – возвращает код заданного символа cimvol.
  • pred(cimvol) – возвращает предыдущий символ.
  • succ(cimvol) – возвращает следующий символ.
  • upcase(cimvol) – преобразует строчную букву в заглавную. Обрабатывает буквы только латинского алфавита.
  • ord(‘A’)=65
  • chr(128)=’Б’
  • pred(‘Б’)=’A’
  • succ(‘Г’)=’Д’
  • upcase(‘n’)=’N’
  • Дан символ, вывести его код.
  • i, j, k, y, x: integer;
  • s, str1, a: string;
  • b: char;
  • begin
  • readln (b); { b:=’A’}
  • y:=ord (b); {y:= ord (‘A’)=65}
  • writeln(y); { y:=65}
  • По данному коду вывести его символ.
  • i, j, k, y, x: integer;
  • s, str1, a: string;
  • b: char;
  • begin
  • readln (y); { y:=65}
  • b:=chr (y); {b:= chr(65)=’A’}
  • Writeln (b); { b:=’A’}
Строковый тип
  • Строковый тип – это данные типа string. Они используются для хранения последовательностей символов. В Паскале длина стандартной строки ограничена 255 символами. Под каждый символ отводится по одному байту, в котором хранится код символа. Кроме того, каждая строка содержит еще дополнительный байт, в котором хранится длина строки. Если заранее известно, что длина строки будет меньше 255 символов, то программист может сам задать максимальную длину строки. Примеры описания строк:
  • str_type = string;
  • const
  • n = 50;
  • s1: string;
  • s2, s3: str_type;
  • s4: string[n];
  • s5, s6, s7: string;
  • Длина строки хранится в первом ее байте, индекс которого равен 0. Объявление типизированной константы для типа string осуществляется так:
  • const
  • s: string = "FreePascal"
  • Существует понятие пустой строки, т.е. строки, которая не имеет элементов. Пустая строка обозначается двумя рядом стоящими апострофами (например, st:= " ").
Операции над строками
  • Строки можно присваивать друг другу. Если максимальная длина переменной слева меньше длины присваиваемой строки, то лишние символы справа отбрасываются.
  • s1:= "this is text";
  • s2:= s1;
  • Строки можно объединять с помощью операции конкатенации, которая обозначается знаком +.
  • s1:= "John";
  • s2:= "Black";
  • s1:= s1 + " " + s2;
  • Строки можно сравнивать друг с другом с помощью операций отношения. При сравнении строки рассматриваются посимвольно слева направо, при этом сравниваются коды соответствующих пар символов. Строки равны, если они имеют одинаковую длину и посимвольно эквивалентны. В строках разной длины существующий символ всегда больше соответствующего ему отсутствующего символа. Меньшей будет та строка, у которой меньше код первого несовпадающего символа (вне зависимости от максимальных и текущих длин сравниваемых строк).
  • "abc" > "ab" (true)
  • "abc" = "abc" (true)
  • "abc" < "abc " (false)
  • Имя строки может использоваться в процедурах ввода-вывода. При вводе в строку считывается из входного потока количество символов, равное длине строки или меньшее, если символ перевода строки (который вводится нажатием клавиши Enter) встретится раньше. При выводе под строку отводится количество позиций, равное ее фактической длине.
  • readln (s1);
  • write (s1);
Операции над строками
  • К отдельному символу строки можно обращаться как к элементу массива символов, например s1. Символ строки совместим с типом char, их можно использовать в выражениях одновременно, например:
  • s1 := "h";
  • writeln (s2 + "r");
  • Можно осуществлять коррекцию любого символа строковой переменной, для чего в соответствующем операторе достаточно указать имя переменной типа string, вслед за которым в квадратных скобках задается номер ее элемента (например, str:="j"). Элементы строки нумеруются с единицы, т.к. в каждой строковой переменной имеется элемент с номером 0, в котором в виде символа хранится длина текущей строки. Чтобы узнать текущую длину, достаточно применить функцию ord к нулевому элементу строки. Например: writeln (ord (st))
  • Нулевой элемент строковой переменной можно корректировать. При этом будет изменяться текущая длина строки. Например, выражение str:=#50 устанавливает текущую длину равной 50.
Строки и массивы символов s: array of string;
  • В языке программирования Паскаль переменная типа array of char может рассматриваться как строка постоянной длины. Переменные такого типа могут свободно использоваться в любых строковых выражениях. При этом компилятор автоматически преобразует такой массив в строку, длина которой равна количеству элементов массива.
  • Массивы типа char можно сравнивать друг с другом и обращаться с ними почти так же, как с переменными типа string. Можно в операторе присваивания в левой части указывать имя такого массива, а в правой – строковую константу с длиной, равной количеству элементов в массиве.
  • Кроме того, в Pascal массивам типа array of char разрешено присваивать строковые константы, длина которых меньше количества элементов массива; в оставшиеся при этом незаполненные элементы заносится символ #0. Однако нельзя переменной типа array of char присвоить значение строковой переменной или строкового выражения (кроме выражений над строковыми константами с результирующей длиной, равной размерности массива). Массивы типа array of char могут использоваться в процедуре val и функциях concat, copy и length.
Процедуры и функции для работы со строками Пример: вывести на экран строку s:=’информатика’, и найти пятый символ в данной строке и вывести его на экран.
  • s, str1: string;
  • begin
  • str1:= s; { str1:=s=’r’;}
  • Writeln (s,’ ’,str1); { str1:=’r’;}
Стандартные функции для работы со строками Для строковых величин определены четыре стандартные функции:
  • 1. Функция соединения Concat (s1, s2, ..., sn). Значение функции – результат соединения строк s1, s2, ..., sn, не превышающая 255 символов. s:=s1+s2+…+sn;
  • s, s1, s2, s3: string;
  • begin
  • Readln (s1, s2, s3); { s1:=’in’; s2:=’forma’; s3:=’tika’;}
  • s:=s1+s2+s3;
  • Writeln (s); { s:=’informatika’}
2. Функция определения длины строки Length (s), вычисляется количество символов, составляющее значение строки s:
  • s, s1: string;
  • k: integer;
  • begin
  • Readln (s); { s:=’informatika’}
  • k:= Length (s); { k:= Length (‘informatika’);}
  • Writeln (k); {k:=11;}
3. Функция выделения copy (s, i, k). Из строки s выделяются k символов, начиная с i-го символа:
  • Var s, s1: string;
  • I, k: integer;
  • begin
  • Readln (s); { s:=’крокодил’;}
  • s1:=copy (s, 4, 3);
  • Writeln (s1); { s:=’код’;}
4. Функция определения позиции - pos (s, t). - вычисляется номер позиции, начиная с которого строка s первый раз входит в строку t; - результат «0», если строка s не обнаруживается в строке t:
  • s, t: string;
  • k: integer;
  • begin
  • Readln (t, s); {t:=’ informatika’; s:=’ forma’; }
  • k:= pos (s, t); { k:= pos (’ forma’, ’ informatika’};
  • Writeln (k); {k:=3;}
Стандартные процедуры для обработки строковых величин в Паскале. В Паскале определены также четыре стандартные процедуры для обработки строковых величин:
  • 1. Процедура удаления delete(s,i,k). Из строки s удаляются k символов, начиная с i-го символа:
  • s, t: string;
  • k: integer;
  • begin
  • readln(s); {s:=’ информатика’; }
  • delete (s,4,3); { delete (’информатика ’,4,3};
  • writeln(s); {s:=’инфатика’ ;}
2. Процедура вставки – insert(s,t,i). Строка s вставляется в строку t, начиная с позиции i:
  • s, t, m: string;
  • k: integer;
  • begin
  • readln (s, t); {s:=’ информа’; t:=’ тика’; }
  • insert (t, s, 8); { insert(’тика’, ’информа’,8); };
  • writeln (s); {s:=’информатика’ ;}
3. Процедура преобразования числа в строку символов – str(k,s):
  • s, t, m: string;
  • k: integer;
  • begin
  • readln (k); {k:=123; (число)}
  • str (k, s); {str(123, s); };
  • writeln (s); {s:=’123’; (строка)}
4. Процедура преобразования строки из цифр в число - val(s,k,i). Значение i=0, если в строке s нет символов, отличных от цифр, в противном случае i= номер позиции первого символа, отличного от цифры:
  • s, t, m: string;
  • k, i: integer;
  • begin
  • readln (s); {s:=’ 564a32’; }
  • val (s, k, i); { val (‘564a32’, k, i); };
  • writeln (s, ‘ k:=’, k, ‘ i:=’, i);
  • {s:=’564a32’, k:=564, i:=4 ;}
  • {s:=’564’, k:=564, i:=0 ;}

Слайд 1

2012 год Строки в Pascal

Слайд 2

Строка - это массив символов, т.е. элементов типа char. В Паскале строке соответствует тип данных String.

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

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

Теория 1 var s1:string;

строка 255 символов

var s2:string; строка 20 символов

Слайд 3

Правила: строки равны только при одинаковом наборе символов и одинаковой длине; Например: "ABC"="ABC" и "ABC"≠"abc" иначе происходит поэлементное сравнение символов по их кодам: "0"

Сравнение двух строк

Сумма кодов строки S1

Сумма кодов строки S1>S2,

Слайд 4

Соединение двух строк.

s1:="2011" + " год"; Writeln(s1);

s1:="10"; s2:="класс"; s3:=s1+" "+s2; Writeln(s3);

Слайд 5

Функция Length

Функция Length(S) определяет текущую длину строки S. Результат - значение целого типа.

PROGRAM Dlina_1; VAR S: STRING; n:INTEGER; BEGIN Writeln(введите слово ") ; Readln(S); n:= Length (S) ; Writeln(‘введите слово ", n:5 ," букв.."); END.

Записываем длину строки в переменную целого типа

PROGRAM Dlina_2; VAR S: STRING; BEGIN Writeln(’введите слово’) ; Readln(S); Writeln(’слово состоит из ’, Length (S) ,’букв. ’); END.

Выводим на экран длину строки, как результат выполнения функции

Задача 1. Составить программу подсчитывающую количество букв в слове.

Слайд 6

Uses crt; var a,b:string; m,n:Integer; Begin Clrscr; Writeln("ВВеди первую строку ");Readln(a); Writeln("ВВеди вторую строку ");Readln(b); m:=Length(a); n:=Length(b); if (m=n) then writeln("Строки равны"); if (m>n) then writeln("Первая больше"); if (m

Задача 2. Сравнить длину двух строк введенных с клавиатуры.

Вычисляем длину строк

Сравниваем длины и выводим соответствующие пояснения

Задача на сравнение строк 5

Слайд 8

Задача 3. Составить программу осуществляющую вырезку из слова ИНФОРМАТИКА букв так, что бы из них получилось слово ТОРТ.

Program n3_1; Uses crt; var a,b,c,d:string; Begin Clrscr; a:="информатика"; b:=""; c:=copy(a,8,1); d:=copy(a,4,2); b:=c+d+c; writeln(b); End.

Задача на составление строк 7

Используем функцию работы с символьными переменными COPY

Второй вариант: Program n3_2; Uses crt; var a,b:string; Begin Clrscr; a:=‘информатика"; b:=a+a+a+a; writeln(b); End.

Используем определение строки как массива символов

Слайд 9

Преобразование типов 8

Функция STR

Str(x, S) преобразует число x в строковый формат. Где x – любое числовое выражение, S – строковая переменная.

Задача 4 . Составьте программу которая выводит первую и последнюю цифру натурального числа, введенного с клавиатуры.

PROGRAM Primer; uses Crt; VAR S: STRING; n:INTEGER; BEGIN Write("Введи число ");readln(n); Str(n,S); Writeln("Первая цифра -",S); Writeln("Последняя цифра - ",S); END.

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

Слайд 10

Процедура val позволяет преобразовать цифровые символы (изображение числа) в число. В общем виде обращение к процедуре выглядит так: VAL (Строка, Число, Код) ; где Строка – строковая константа или переменная, содержащая изображение числа; Число – переменная целого или дробного типа, которой должно быть присвоено значение Код – возвращаемый процедурой код ошибки (целое число)

Преобразование типов 9

Процедура VAL

Слайд 11

Преобразование типов 10

BEGIN s1:="123456789"; val(s1,n,code); Writeln(n); END.

BEGIN s1:="123456789ABCDE"; val(s1,n,code); Writeln(n); END.

Слайд 12

s1:="ABCDE123456789"; val(s1,n,code); Writeln(n);

В PascalABC есть более развитый арсенал преобразований как в DELPHI: S:=IntToStr(N) - преобразует целое число к строке; n:=StrToInt(S) - преобразует строку в целое число S:=FloatToStr(r) - преобразует вещественное число к строке R:=StrToFloat(s) преобразует строку в вещественное число. Если преобразование невозможно, то возникает ошибка времени выполнения

Преобразование типов 11

Слайд 13

Преобразование типов 12

Задача 5. Дано строка символов а1+а2=. Где 1

VAR S: STRING; a,b,c:real; code:INTEGER; BEGIN Write(‘Введи выражение = ");read(s); val(s,a,code); val(s,b,code); if (s="+") then c:=a+b; if (s="-") then c:=a-b; if (s="*") then c:=a*b; if (s="/") then c:=a/b; clrscr; Writeln(s,c); END.

Из строки берем первый и третий символ и преобразуем в число

Слайд 14

Символы и их коды 13

Функции ORD и CHR

Функция Ord(S) – определяет порядковый номер символа.

Функция Chr(i) – определяет символ с порядковым номером i

По номеру 255 выводим символ из кодовой таблицы Я

Слайд 15

Символы и их коды 14

Задача 6. Составьте программу, которая по символу введенному с клавиатуры, выводит его номер в кодовой таблице.

PROGRAM Primer; uses Crt; VAR S: char; n,code:INTEGER; BEGIN Write("Введи символ ");readln(s); Writeln("Символ ", s ," имеет код -",ord(s)); END.

Функция ORD работает только символьным типом данных

Слайд 16

Задача 7. Дана строка символов. Определить сколько раз в ней встречается буква А (русская).

Program n5; Uses Crt; Var s:string; i,k:integer; begin ClrScr; Write("ВВеди строку "); readln(s); k:=0; for i:=1 to length(s) do if (s[i]="А") then k:=k+1; writeln("Буква А встречается = ", k:8," раз"); end.

Перебираем от 1 до последней буквы

Если на i-ом месте стоит А увеличиваем К на 1

Подсчет символов в строке 15

Слайд 17

Замечание 16

for i:=1 to length(s) do begin if (s[i]=…… if (s[i]=…… end;

Замечание. Если требуется поиск нескольких символов в строке, то условия заключаем в программные скобки BEGIN … END

Слайд 18

Подсчет символов в строке 17

Начало Ввод S i,1,length(s) Si ="A" К=К+1 Вывод К Конец Да Нет

Блок-схема к задаче подсчета букв А в строке

Слайд 19

Замена символов в строке 18

Задача 8. Дана строка символов. Заменить в ней все буквы А на букву О.

Program n6; Uses Crt; Var s:string; i:integer; begin ClrScr; Write("ВВеди строку "); readln(s); for i:=1 to length(s) do if (s[i]="A") then s[i]:="O"; writeln(s); end.

Если на i-ом месте стоит А ставим на i-е место О.

Слайд 20

Замена символов в строке 19

Si ="O" Вывод S

Блок-схема к задаче замен буквы А на О