Строки в Pascal

Содержание

Слайд 2

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

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

строке соответствует тип данных String.

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

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

Теория 1

var s1:string;

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

var s2:string[20];

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

Слайд 3

Правила: строки равны только при одинаковом наборе символов и одинаковой длине;

Правила:
строки равны только при одинаковом наборе символов и
одинаковой длине;
Например:

'ABC'='ABC' и 'ABC'≠'abc'
иначе происходит поэлементное сравнение символов
по их кодам:
'0'<'1'<...<'9'<'A'<...<'Z'<'a'<...<'z'<символы кириллицы
Например: 'ADS'<'АДС'
65+68+83 < 192+196+209 (По таблице ASCII)

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

Теория 2

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

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

Слайд 4

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

Теория 3

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

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

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

Слайд 5

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

Функция 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);

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 (mEnd.

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

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

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

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

Слайд 7

Функция Сору Функция Сору(S, P, N) выделяет из строки S подстроку

Функция Сору

Функция Сору(S, P, N) выделяет из строки S подстроку

длиной N символов, начиная с позиции P. Здесь N и P – целочисленные выражения.

Теория 6

В фразе МАМА МЫЛА РАМУ слово РАМУ начинается с 11 буквы и состоит из 4 букв
COPY(s1,11,4)

Слайд 8

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

Задача 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[8]+a[4]+a[5]+a[8];
writeln(b);
End.

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

Слайд 9

Преобразование типов 8 Функция STR Str(x, S) преобразует число x в

Преобразование типов 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[1]);
Writeln('Последняя цифра - ',S[length(S)]);
END.

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

Слайд 10

Процедура val позволяет преобразовать цифровые символы (изображение числа) в число. В

Процедура 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.

Преобразование типов 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 есть более развитый арсенал преобразований как

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

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

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

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

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

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

Слайд 14

Символы и их коды 13 Функции ORD и CHR Функция Ord(S)

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

Функции ORD и CHR

Функция Ord(S) – определяет

порядковый номер символа.

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

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

Слайд 15

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

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

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

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

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

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

Слайд 16

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

Задача 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

Замечание 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'

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

Начало

Ввод S

i,1,length(s)

Si ='A'

К=К+1

Вывод К

Конец

Да

Нет

Блок-схема к задаче подсчета

букв А в строке

К=0

Слайд 19

Замена символов в строке 18 Задача 8. Дана строка символов. Заменить

Замена символов в строке 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'

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

Начало

Ввод S

i,1,length(s)

Si ='A'

Si ='O'

Вывод S

Конец

Да

Нет

Блок-схема к задаче

замен буквы А на О
Слайд 21

Задача 9 Удалить из строки введенной с клавиатуры все буквы R

Задача 9 Удалить из строки введенной с клавиатуры все буквы R

(латинские, заглавные).

Program n7;
Uses Crt;
var a,b:String;
i:integer;
begin
ClrScr;
Write('ВВеди строку = ');readln(a);
b:='';
for i:=1 to length(a) do if (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'

Удаление символов из строки 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

Вложенные условия. 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 ='а'

Вложенные условия 23

Начало

Ввод S

i, 1, length(S)

Si ='а'

Si ='б'

Si ='а'

Вывод S


Конец

Si ='а' или Si ='б'

Да

Нет

Да

Нет

Блок-схема к задаче замены А на Б и наоборот

Слайд 25

Вложенные циклы 24 begin ClrScr; Write('ВВеди строку '); readln(s); s1:=',.;:"!?-'; for

Вложенные циклы 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 (k<>0) then writeln(s1[i],' - ',k:5,' раз');
end;
end.

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

Внешний цикл, осуществляющий перебор знаков записанных в S1

Тело внешнего цикла содержит цикл, отвечающий за перебор символов введенной строки