Язык программирования Pascal Работа со строками А. Жидков

Содержание

Слайд 2

Строковые переменные

Тип данных (string) определяет строки с максимальной длиной 255 символов. Длину

Строковые переменные Тип данных (string) определяет строки с максимальной длиной 255 символов.
строки можно регулировать в секции описаний.
Например,
var   MaxLine : string; //длина строки до 255   City : string[30]; // длина строки до 30 символов
Для переменных типа string выделяют память, на 1 байт больше максимальной длины строки.
Начальный байт с номером 0 отводится для хранения количества записанных в строку символов.
Встроенная функция Length возвращает фактическое количество литер в записанных в строку.

Слайд 3

Операции над строками.

Выражения, в которых операндами служат строки, называются строковыми.
Над строками определены

Операции над строками. Выражения, в которых операндами служат строки, называются строковыми. Над
два вида операций:
1. Операция сцепления (конкатенации) обозначают как (+) .
Например: SumStr := ‘Язык'+‘ программирования'+‘ Pascal'
2. Операции отношения (=, <>, >, <, >=, <=) проводят сравнение двух строк слева направо до первого несовпадающего символа, и та строка считается больше, где первый несовпадающий символ имеет больший номер в таблице ASCII.
Например, выражение 'MS-DOS'<'MS-Dos' имеет значение True
Если строки имеют различную длину, но в общей части символы совпадают, считается, что короткая строка меньше, чем длинная.
Строки равны, если последовательность символов в них совпадает.

Слайд 4

Изменение строковых переменных

Для изменения строковой переменной используется оператор присваивания (:=) или оператор

Изменение строковых переменных Для изменения строковой переменной используется оператор присваивания (:=) или
ввода данных.
Например:
Name:=‘Михаил’;
Write (‘Укажите Вашу фамилию’);
Read (fam);
Если значение переменной после выполнения оператора присваивания превышает по длине максимально допустимую при описании величину, то все лишние символы справа отбрасываются.

Слайд 5

Обращение к отдельным символам строки

К символам строки можно обратиться по номеру (индексу)

Обращение к отдельным символам строки К символам строки можно обратиться по номеру
символа в строке.
Например, чтобы обратиться к третьему символу строки SumStr надо записать SumStr[3].
Запись SumStr[0] возвращает значение текущей длины строки.

Что выведет на экран следующий фрагмент программы?
Var StrRama:string[20];
Begin
StrRama:=‘МАМА МЫЛА РАМУ’;
WRITE (StrRama[14]+ StrRama[11]+ StrRama[2]+ StrRama[8], ord(StrRama[0]));
End.

Слайд 6

Функции для обработки строк

Delete (Str,Poz,N) - удаление N символов строки Str, начиная

Функции для обработки строк Delete (Str,Poz,N) - удаление N символов строки Str,
с позиции Poz.
Insert (What,Where,Poz) - вставка строки What в строку Where, начиная с позиции Poz.
Copy (Str,Poz,Nstr) - строка длиной Nstr, начиная с позиции Poz, из строки Str.
Concat (Str1,Str2,...,StrN) - сцепление строк в указанном порядке.
Poz (What,Where) - обнаруживает появление подстроки What в строке Where.
UpCase (Ch) - преобразует строчную букву в прописную.
Str (Number,Stroka) - преобразует число в строку.
Val (Stroka,Number,Code) - преобразует строку в число и выдает код правильности преобразования.

Слайд 7

Функция Length

Встроенная функция Length (длина) позволяет определить фактическую длину текстовой строки, хранящейся

Функция Length Встроенная функция Length (длина) позволяет определить фактическую длину текстовой строки,
в указанной переменной (а не величину предельного размера строки, установленную при декларации):
Program DemoFunctionLength; Var   Word : string; Begin   write ('Введите слово :');   readln(Word);   writeln('Это слово состоит из ',Length (Word),' букв'); End.
Примечание. При подсчете фактической длины строки учитываются все входящие в нее символы, в том числе и пробелы.

Слайд 8

Функция Upcase

Функция Upcase позволяет преобразовывать символ любой литеры из строчного в прописной.

Функция Upcase Функция Upcase позволяет преобразовывать символ любой литеры из строчного в

Эта функция рассчитана на обработку отдельного символа. Поэтому для обработки строки символов с помощью этой функции приходится организовывать цикл.
Program DemoFunctionUpcase; Var   Word : string;   i : integer; Begin   Word := 'фирма Microsoft';   for i := 6 to Length (Word) do     Word[i] := UpCase (Word[i]);     writeln(Word); End.
В результате работы программы на терминал выдается строка, содержащая большие английские буквы и маленькие русские.

Слайд 9

Функция Copy

Функция Copy позволяет копировать фрагмент некоторой строки из одной переменной в

Функция Copy Функция Copy позволяет копировать фрагмент некоторой строки из одной переменной
другую. Вызывая эту функцию нужно указать следующие параметры:
имя строки, из которой должен извлекаться копируемый фрагмент,
позицию в строке, начиная с которой будет копироваться фрагмент,
число копируемых символов.
Program DemoFunctionCopy; Var   Word : string;   Word1 : string[20]; Begin   Word := ‘Кадетский корпус';   writeln(Word);   Word1 := Copy (Word,11,6);   writeln(Word1); End.
Примечание. Если начальная или конечная позиции копируемого текста находятся вне пределов исходной строки символов, то сообщение об ошибке не выдается. Результатом выполнения операции в первом случае будет строка нулевой длины, во втором - фрагмент от начальной позиции копирования до конца исходной строки.

Слайд 10

Функция Pos

Функция Pos осуществляет поиск фрагмента в строке.
Если заданный фрагмент в строке

Функция Pos Функция Pos осуществляет поиск фрагмента в строке. Если заданный фрагмент
присутствует, то функция возвращает номер позиции, с которой он начинается.
Если фрагмент не найден, то функция возвращает нуль.
Program DemoFunctionPos; Var   Word : string;   SearchWord : string[20];   Position : integer; Begin   Word := ‘Кадетский корпус';   writeln(Word);  SearchWord:=‘детский’;   Position := Pos(SearchWord, Word);   if Position <> 0 then       begin         write ('Фрагмент <',SearchWord,'> содержится в строке <',Word);         writeln ('>, начиная с позиции ',Position );       end     else       writeln('Фрагмент <',SearchWord,'> не содержится в строке <',Word);
End.

Слайд 11

Функция Concat

Функция Concat (Str1,Str2,...,StrN) выполняет конкатенацию (или сцепление) строк Str1,Str2,...,StrN в том

Функция Concat Функция Concat (Str1,Str2,...,StrN) выполняет конкатенацию (или сцепление) строк Str1,Str2,...,StrN в
порядке, в каком они указаны в списке параметров.
Сумма символов сцепленных строк не должна превышать 255.
Program DemoFunctionConcat; Var   Word : string;   Word1, Word2 : string[20]; Begin   Word1 := ‘кадетского';   Word2 := ‘корпуса';   Word := Concat('Кадеты ',Word1,Word2);   writeln(Word); end.

Слайд 12

Задание на самоподготовку

Посчитайте количество цифр в веденной строке символов.
Проверьте правописание “жи”

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

Слайд 13

Program cifra;
Var
Word : string;
i,k : integer;
Begin
cls;
word:='1 t $ 45nnfft623456kugтра5234626ктор 122';
k:=0;
for i:=1 to

Program cifra; Var Word : string; i,k : integer; Begin cls; word:='1
Length(word) do
if (word[i]>='0') And (word[i]<='9') then k:=k+1;
writeln(Word,' ', 'число цифр',k);
end.

Задание на самоподготовку

Посчитайте количество цифр в введенной строке символов.

Слайд 14

Задание на самоподготовку

Проверьте правописание “жи” и “ши” в тексте. Выведите на экран

Задание на самоподготовку Проверьте правописание “жи” и “ши” в тексте. Выведите на
количество сделанных ошибок и исправленную строку. Применяйте подпрограммы.

Program cifra;
Var
Word : string;
i,osh : integer;
procedure zhi_shi (var Word : string;var i,osh : integer);
begin
if word[i+1]='ы' then begin osh:=osh+1; word[i+1]:='и'; end;
end;
Begin
cls;
word:='Тишына, камышы. Шыпит костер. Жыдкий свет разливается живым золотом';
writeln(Word,' всего символов',Length(word));
osh:=0;
for i:=1 to Length (word) do
Begin
if (word[i]='ж')or (word[i]='Ж') then zhi_shi(Word,i,osh);
if (word[i]='ш')or (word[i]='Ш') then zhi_shi(Word,i,osh)
end;
writeln(Word,' число ошибок',osh);
end.

Слайд 15

Задание на самоподготовку

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

programm

Задание на самоподготовку Выясните, сколько раз встречается каждая буква алфавита в предложенном
chislo_simbol;
var
i,k,simbol: integer;
Word : string;
begin
cls;
word:='Мороз и солнце; день чудесный! Еще ты дремлешь, друг прелестный...';
writeln(Word,' ','всего символов',Length(word));
for i:=192 to 192+31 do
begin
simbol:=0;
write (chr(i),chr(i+32));
for k:=1 to Length (word) do
if (word[k]=chr(i))or (word[k]=chr(i+32)) then simbol:=simbol+1;
writeln (' ', simbol)
end;
end.

Слайд 16

Задание на самоподготовку

В заданном тексте найти и распечатать слово максимальной длины.

program maxi_slovo;

Задание на самоподготовку В заданном тексте найти и распечатать слово максимальной длины.
var
k,max,nach,pmax:integer;
Word: string;
begin
cls;
word:='У лукоморья дуб зеленый; златая цепь на дубе том...';
writeln(Word,' ','всего символов',Length(word));
max:=1; //длинна слова максимальной длинны
nach:=1; //начало текущего слова
for k:=1 to Length(word) do
if word[k]=' ' then
begin
if k-nach>max then begin max:=k-nach;pmax:=nach; end;
nach:=k
end;
write(copy(word,pmax,max)); //pmax начало максимального слова
end.

Слайд 17

Задание на самоподготовку

Заданы разделенные пробелами фамилия, имя и отчество учащегося и три

Задание на самоподготовку Заданы разделенные пробелами фамилия, имя и отчество учащегося и
оценки за экзамены. Напечатайте его фамилию и инициалы и средний балл.

program familia;
var
i,k,simbol,oc1,oc2,oc3,c: integer;
Word : string;
srball: real;
p: array [1..5] of integer;
begin
cls;
word:='Фархутдинов Исмаил Бархударович 3 4 4';
Writeln (Word,' ','всего символов',Length (word));
i:=1;
for k:=1 to Length(word) do
if word[k]=' ' then begin p[i]:=k;i:=i+1;write (' ',p[i-1]) end; //массив с позициями пробелов p[i]
writeln;
write (copy(word,1,p[1]),copy(word,p[1]+1,1)+'. ',copy(word,p[2]+1,1)+'. ');//печать Фамилия И.О.
val(copy(word,p[3]+1,1),oc1,c); // преобразование оценки в число
val(copy(word,p[4]+1,1),oc2,c);
val(copy(word,p[5]+1,1),oc3,c);
srball:=(oc1+oc2+oc3)/3;
write (' средний балл ',srball:5:2);
end.

Слайд 18

Процедура Insert

Процедура Insert вставляет в исходную строку, начиная с указанной позиции, другую

Процедура Insert Процедура Insert вставляет в исходную строку, начиная с указанной позиции,
строку. Процедура Insert (Word1,Word2,5) вставляет строку Word1 в строку Word2, начиная с 5-ой позиции.
Program DemoFunctionConcat;
Var
Word1, Word2 : string;
Begin
Word1 := ‘ кадетский ';
Word2 := ‘Санкт-Петербургский корпус';
Insert(Word1,Word2,21);
writeln(Word2);
end.

Слайд 19

Процедура Delete

Процедура Delete удаляет в строке фрагмент определенной длины, начиная с указанной

Процедура Delete Процедура Delete удаляет в строке фрагмент определенной длины, начиная с
позиции. Так, оператор Delete(Word1,2,3) удаляет из указанной строки фрагмент, длиной в три символа, начиная со второго.

Слайд 20

Процедура Str

Общий вид Str(Chislo,Stroka)
Процедура Str преобразует числовое значение переменной Chislo в строковую

Процедура Str Общий вид Str(Chislo,Stroka) Процедура Str преобразует числовое значение переменной Chislo
переменную Stroka. После первого параметра может указываться формат, аналогичный формату вывода.
Program DemoProcedureStr; Var   Word : string;   Chislo : integer; Begin   Chislo := 1560;   Str(Chislo:8, Word);   writeln(Word); End.

Слайд 21

Процедура Val

Общий вид Val(Stroka,Chislo,Code)
Процедура Val преобразует строку Stroka в величину целочисленного или

Процедура Val Общий вид Val(Stroka,Chislo,Code) Процедура Val преобразует строку Stroka в величину
вещественного типа и помещает результат в Chislo.
Строка Stroka не должна содержать пробелов в начале и в конце.
Code целочисленная переменная. Если во время операции преобразования ошибки не обнаружено, значение Code равно нулю, если же ошибка обнаружена, Code будет содержать номер позиции первого ошибочного символа, а значение Chislo будет не определено.
Program DemoProcedureVal; Var   Word : string;   Chislo, Code : integer; Begin   writeln('Введите строку цифр '); readln(Word);   Val(Word, Chislo, Code);   if Code <> 0     then       writeln('Ошибка! В позиции ',Code,' не цифра!',);
End.