Меню
Разработки
Разработки  /  Информатика  /  Разное  /  10 класс  /  Конспект урока по информатике по теме "Строковый тип данных на ABС Pascal"

Конспект урока по информатике по теме "Строковый тип данных на ABС Pascal"

Урок научит учащихся работать со строковым типом данных.
17.02.2015

Описание разработки

Строка (строковый тип данных) – это последовательность символов длиной N, где 1<=N<=255.

Для определения данных строкового типа используется идентификатор string. Если за идентификатором string следует значение максимальной длины строки данного типа (заключенное в квадратные скобки), то такой тип компилятором рассматривается как произвольный, если же длина строки не указана (в этом случае она равна максимальной величине – 255), то тип считается стандартным.

Описание переменной произвольного типа:

Type TS=string[80];

Var s, st:TS;

 Str:string[80];

· Описание переменной стандартного типа:                     

Var s, s1:string;                                                                       

Элементы строки определяются именем строки с индексом, заключенным в квадратные скобки. Например, S[3]. Первый символ строки имеет номер 1 и т. д. Можно сказать, что строка представляет собой одномерный массив, элементами которого являются символы. Тип string и тип char совместимы, они могут употребляться в одних и тех же выражениях.

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

Строковая константа – последовательность символов, заключенная в апострофы. Например, ‘237’, ‘это строковая константа’.

Строку можно обрабатывать двумя способами:

1. как одномерный массив символов;

2. как единый объект.

Операции, определенные над строковыми переменными

1. Операции присваивания.

s:=’Turbo Pascal’;

s1:=s; если длина s>s1, то лишние символы будут отброшены

str:=’x’;

2. Операции сравнения (отношения) =, <>, >, <, <=, >=.

Конспект урока по информатике по теме Строковый тип данных на ABС Pascal

Правила сравнения строк:

1) Сравнение строк производится посимвольно в соответствии с их кодами слева направо до первого несовпадающего символа. Строка считается больше, если в ней первый несовпадающий символ имеет больший номер в таблице кодов.

Например, ‘MS-DOS’<’MS-Dos’.

2) Если строки имеют различную длину, но в общей части символы совпадают, то более короткая строка меньше.

Например, ‘Компьютер’<’Компьютер ’.

3) Строки равны, если они полностью совпадают, т. е. совпадают длины и содержание.

Например, ‘Маска’ = ’Маска’.

Полную информацию смотрите в файле. 

Содержимое разработки



Строковый тип данных в В PascalABC

Строка (строковый тип данных) – это последовательность символов длиной N, где 1.


Для определения данных строкового типа используется идентификатор string. Если за идентификатором string следует значение максимальной длины строки данного типа (заключенное в квадратные скобки), то такой тип компилятором рассматривается как произвольный, если же длина строки не указана (в этом случае она равна максимальной величине – 255), то тип считается стандартным.


  • Описание переменной произвольного типа:

Type TS=string[80];

Var s,st:TS;

Str:string[80];


  • Описание переменной стандартного типа:

Var s,s1:string;


Структура строки:

0 1 2 3 4 n номер байта

Chr(4)

М

А

Ш

А





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


Элементы строки определяются именем строки с индексом, заключенным в квадратные скобки. Например, S[3]. Первый символ строки имеет номер 1 и т.д. Можно сказать, что строка представляет собой одномерный массив, элементами которого являются символы. Тип string и тип char совместимы, они могут употребляться в одних и тех же выражениях.


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

Строковая константапоследовательность символов, заключенная в апострофы. Например, ‘237’, ‘это строковая константа’.


Строку можно обрабатывать двумя способами:

  1. как одномерный массив символов;

  2. как единый объект.



Операции, определенные над строковыми переменными

  1. Операции присваивания.

s:=’Turbo Pascal’;

s1:=s; если длина ss1, то лишние символы будут отброшены

str:=’x’;


  1. Операции сравнения (отношения) =, , , =.

Правила сравнения строк:

1)Сравнение строк производится посимвольно в соответствии с их кодами слева направо до первого несовпадающего символа. Строка считается больше, если в ней первый несовпадающий символ имеет больший номер в таблице кодов.

Например, ‘MS-DOS’MS-Dos’.

            2)Если строки имеют различную длину, но в общей части символы совпадают, то более короткая строка меньше.

Например, ‘Компьютер’

            3)Строки равны, если   они полностью совпадают, т.е. совпадают длины и содержание.

Например, ‘Маска’ = ’Маска’.


  1. Сложение (конкатенация) строк.

Операция сцепления (+) применяется для соединения нескольких строк в одну строку. Сцеплять можно и константы, и переменные. Длина результирующей строки не должна превышать 255 символов.


  1. Операции ввода-вывода.

Строки можно вводить и выводить как одномерный массив в цикле.

Пример ввода:

Writeln(‘input n’);

Readln(n);

For i:=1 to n do read(s[i]); readln;

Пример вывода:

For i:=1 to n do write(s[i]); writeln;


Как единый объект.

Ввод строки: readln(s);

Если будет введено меньше символов, чем задано при описании строки, то в нулевом байте установится текущая длина строки.

Вывод строки: writeln(s);


5. Стандартные процедуры и функции.

            Для обработки строковых данных можно использовать специальные процедуры и функции.

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

1) Процедура  Delete(var St:string; poz, n:byte) – удаление n символов строки St, начиная с позиции Poz.

Пример

Значение St

Выражение

Результат

‘абвгде’

Delete(St, 4, 2);

‘абве’

‘река Волга’

Delete(St, 1, 5);

‘Волга’

2) Процедура Insert (S1 :string; var S2 :string; Poz:byte) – вставка строки S1 в строку S2, начиная с позиции Poz.

Пример

Значение S1

Значение S2

Оператор

Результат

‘ ЕС ’

‘ЭВМ1841’

Insert (S1, S2, 4);

‘ЭВМ ЕС 1841’

‘ N’

‘ Рис. 2’

Insert (S1, S2 , 6);

‘ Рис. N2’

3) Процедура Str(N:{integer/real}; var St:string) – преобразование числового значения N в строковый и помещение результата в строку St.

Пример

Значение N

Выражение

Результат

1500

Str (N:6,St);

‘  1500’

4) Процедура Val(St:string; var N:{integer/real}; var Code:byte) – преобразует значение St в величину целочисленного или вещественного типа и помещает результат в N. Code – целочисленная переменная. Если во время операции преобразования ошибки не обнаружено, значение Code равно 0, если же обнаружена ошибка, то Code будет содержать номер позиции первого ошибочного символа, а значение N не определено.

Пример

Значение St

Выражение

Результат

‘1500’

Val(St, N,Code);

Code=0

’14.2A+02

Val(St, N,Code);

Code=5

5) Функция Copy(S:string; Poz, N:byte):string; – выделяет из строки S подстроку длиной N символов, начиная с позиции Poz.

Пример

Значение S

Выражение

Результат

‘Мама мыла раму’

Copy(S, 6, 4);

‘мыла’

6) Функция Concat(S1,S2,…,Sn:string):string; – выполняет сцепление строк S1,S2,…,Sn в одну строку.

Пример

Выражение

Результат

Concat(‘Мама ’,’мыла ’,’раму’)

‘Мама  мыла раму’

7) Функция Length(S:string):byte; – определяет текущую длину строки S.

Пример

Значение S

Выражение

Результат

‘1500 символов’

Length(S)

13

8) Функция Pos(S1,S2:string):byte;– определяет первое появление в строке S2 подстроки S1.

Пример

Значение S2

Выражение

Результат

‘abcdef’

Pos(‘cd’,S2)

3

‘abcdef’

Pos(‘k’,S2)

0


Замечание: В PascalABC добавлены следующие процедуры и функции:

  1. SetLength(var s:string; n:byte); - устанавливает в строке s длину, равную n.

  2. IntToStr(i:integer):string; - преобразует целое число в строку.

  3. StrToInt(s:string):integer; - преобразует строку в целое число. Если преобразование невозможно, то возникает ошибка времени выполнения.

  4. FloatToStr(x:real):string; - преобразует вещественное число в строку.

  5. StrToFloat(s:string):real; - преобразует строку в вещественное число. Если преобразование невозможно, то возникает ошибка времени выполнения.

  6. UpperCase(s:string):string; - возвращает строку s, преобразованную к верхнему регистру.

  7. LowerCase(s:string):string; - возвращает строку s, преобразованную к нижнему регистру.

  8. Trim(s:string):string; - возвращает копию строки s с удаленными лидирующими и заключительными пробелами.

  9. TrimLeft(s:string):string; - возвращает копию строки s с удаленными лидирующими  пробелами.

  10. TrimRight(s:string):string; - возвращает копию строки s с удаленными заключительными пробелами.


Пример. Из данной символьной строки выбрать все цифры и сформировать другую строку из этих цифр, сохранив их последовательность.

Program Stroki;

Var S1, S2:string;

Begin

Write(‘Введите строку’);

Readln(S1);

S2:= ‘ ‘;

For i:=1 to length(S1) do

If (S1[i]=’0’) and (S1[i]

                         Then S2:=S2+S1[i];

Writeln(‘Результат’, S2)

End.  


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

    1. Работа со строкой как с одномерным массивом ( в этом случае текущая длина строки динамически не меняется):

Var st:string;

i,j:byte;

begin writeln(‘input st’);

readln(st);

j:=1;

for i:=2 to length(st) do

if (st[i]st[j]) or (st[j]’ ‘) then

begin j:=j+1;

st[j]:=st[i];

end;

for i:=1 to j do write(st[i]); writeln;

end.

    1. Работа со строкой как с единым объектом массивом ( в этом случае текущая длина строки динамически меняется):

Var st:string;

Begin writeln(‘input st’);

readln(st);

while pos(‘ ‘,st)0 do delete(st,pos(‘ ‘,st),1);

writeln(st);

end.


Как преобразовать эту программу, чтобы не было пробелов в начале и в конце строки?


Var st:string;

Begin writeln(‘input st’);

readln(st);

while pos(‘ ‘,st)0 do delete(st,pos(‘ ‘,st),1);

if st[1]=' ' then delete(st,1,1);

if st[length(st)]=’ ‘ then delete(st,length(st),1);

writeln(st);

end.


В PascalABC эта задача упрощается:


Var st:string;

Begin writeln(‘input st’);

readln(st);

while pos(‘ ‘,st)0 do delete(st,pos(‘ ‘,st),1);

writeln(Trim(st));

end.


Замечание: Если это решение задачи оформить в виде процедуры, то любую строку можно привести к правильному виду, т.е. к строке, у которой все слова разделены одним пробелом и нет лишних пробелов в начале и в конце строки. Это позволит решение большинства задач на строки привести к одному алгоритму:



Var s,s1:string;

Begin writeln(‘input s’);

Readln(s);

S:=s+’ ‘;

While pos(‘ ‘,s)0 do

Begin s1:=copy(s,1,pos(‘ ‘,s)-1); {выделяем слово}

{обрабатываем слово в соответствии с условием задачи}

Delete(s,1,pos(‘ ‘,s)); {удаляем обработанное слово}

{в цикле переходим к обработке следующего слова}

End;

{вывод результата}

End.


Задача 2. Найти в строке слово максимальной длины.



Var s:string;

Function maxsl(s:string):string;

Var max:string;

Begin s:=s+’ ‘;

Max:=length(copy(s,1,pos(‘ ‘,s)-1)); {в max помещаем первое слово в строке}

Delete(s,1,pos(‘ ‘,s); {удаляем его}

While pos(‘ ‘,s)0 do

Begin if length(copy(s,1,pos(‘ ‘,s)-1)) max then max:= length(copy(s,1,pos(‘ ‘,s)-1)); {обрабатываем слово в соответствии с условием задачи}

Delete(s,1,pos(‘ ‘,s)); {удаляем обработанное слово}

{в цикле переходим к обработке следующего слова}

End;

Maxsl:=max;

End;

Begin writeln(‘input s’);

Readln(s);

Writeln(maxsl(s))

End.



Замечание: В задаче использовалась правильная строка. В противном случае надо ее привести к этому виду, удалив лишние пробелы (решение см. выше) и оформив это в виде процедуры. Лучше эту процедуру включить в свой модуль.


Список задач на строковый тип.

1. Дана строка символов. Подсчитать количество слов в строке. Оформить в виде процедуры или функции.

2. Дана строка символов. Найти слово максимальной длины. Оформить в виде процедуры или функции.

3. Дана строка символов. Найти слово минимальной длины. Оформить в виде процедуры или функции.

4. Дана строка символов. Удалить из строки все слова, начинающиеся на "pro". Оформить в виде процедуры или функции.

5. Дана строка символов. Удалить из строки все символы цифр. Оформить в виде процедуры или функции.

6. Дана строка символов. Удалить из нее текст, заключенный в {}. Считать, что такое сочетание встречается в строке только один раз.

7. Дана строка символов. Определить, есть ли в ней слова, начинающиеся и оканчивающиеся на одну и ту же букву. Оформить в виде процедуры или функции.

8. Дана строка символов. Определить есть ли в ней слова-палиндромы. Оформить в виде процедуры или функции.

9. Дана строка символов. Заменить символы "I", "2", "3" словами "один", "два", "три". Оформить в виде процедуры или функции.

10. Написать процедуру, которая вставляет указанный символ после указанной позиции.

11. Написать функцию, определяющую вхождение данного элемента в строку.

12. Определить сколько раз GOTO встречается в строке. Оформить в виде процедуры или функции.

13. Строка символов состоит из латинских букв. Расположить их по алфавиту. Оформить в виде процедуры или функции.

14. Найти в строке все слова-палиндромы. Оформить в виде процедуры или функции.

15. Определить есть ли в строке одинаковые слова. Оформить в виде процедуры или функции.

16. Удалить из строки все четные слова. Оформить в виде процедуры.

17. Дана строка символов. Удалить из строки все нецифровые символы. Оформить в виде процедуры или функции.

18. Дана строка символов. Определить, сколько различных символов в строке.



11


-80%
Курсы профессиональной переподготовке

Учитель, преподаватель физики и информатики

Продолжительность 600 или 1000 часов
Документ: Диплом о профессиональной переподготовке
17800 руб.
от 3560 руб.
Подробнее
Скачать разработку
Сохранить у себя:
Конспект урока по информатике по теме "Строковый тип данных на ABС Pascal" (46.48 КB)

Комментарии 0

Чтобы добавить комментарий зарегистрируйтесь или на сайт