Программирование на языке Turbo Pascal

       

ТЕМА №9: ДАННЫЕ ТИПА STRUNG.


ПРОГРАММНО -  ДИДАКТИЧЕСКОЕ ОБЕСПЕЧЕНИЕ: ЭВМ типа IBM. ТР5.

ЦЕЛИ И ЗАДАЧИ: приобретение навыков составления программ с использованием данных типа STRING

ТРЕБОВАНИЯ К ЗНАНИЯМ И УМЕНИЯМ:

Учащиеся должны знать:

-          Что такое данные типа STRING;

-          Как описываются строковые данные;

-          Для чего используются строковые данные;

-          Сколько бай занимают  строковые данные;

-          Для чего используется нулевой элемент строковой переменной,

-          Как обозначается элемент строковой переменной;

-          С какой цифры начинается отсчет номера элемента строкой переменной;

-          Какой функцией определяется длина строковой переменной;

-          Как склеить две строковые переменные;



-          Как вырезать часть строковой переменной;

-          Как вставить одну строковую переменную в другую;

-          Как удалить часть строковой переменной;

-          Как можно преобразовать числовую переменную в строковую;

-          Как определить входить ли одна строковая переменная в состав другой.

Учащиеся должны уметь:

-          Правильно задавать строковые переменные;

-          Правильно использовать строковые переменные;

-          Правильно использовать  процедуры и функции обработки строковых переменных;


-          Вводить строковые переменные;

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

ПЛАН-СОДЕРЖАНИЕ УРОКА

Основные понятия

Данные типа String или строковые данные (Строка) – это особая форма одномерного массива символов.

Отличие строки от массива в том, что массив имеет фиксированную длину (количество элементов), которая определяется при описании.

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

Var S: string[n];   SS: string;   где

n – число символов в строковой переменной, изменяется от 1 до 255.

 Длина описанной переменной S - n+1 байт.

Максимально возможная длина строковой переменной – 255 символов.

S[i] – общий вид элемента строковой переменной

Строка имеет две разновидности длины:

-          общую длину строки (n), которая характеризует размер памяти, выделяемый строке при описании.

-          Текущую длину строки (p) (p<=n), которая показывает количество смысловых символов в каждый конкретный момент времени. При выдаче на экран значения нулевого символа (Write(ord (s[0]));), получим величину р.  Например:

   0           1           2            3         4             5          6            7                      8           9          10



B

O

R

L

A

N

D

            Символ, код которого =7                   р=7      n=10                var s:string[10]

Когда в описании длина не указывается, то она по умолчанию берется 255 символов.

Заполняются строковые данные с помощью оператора присваивания (:=)  или оператора ввода (read).

Примеры: SS:=’Информатика’; read(s);

Сравнение строковых переменных идет слева направо в соответствии с ASCII кодами символов. При сравнении длин строк используются операции =, >=, <=, <>, <, >. Если длина переменных одинакова – больше то, у которого больше код. Если длины разные – более короткая величина меньше. Считается, что отсутствующие символы в более короткой строке имеют код, меньше кода любого действительного символа. Например, ‘AB’ больше, чем ‘A’.



Строковые переменные можно склеить (знак +), что равноценно дозаписи символов второй переменной к символам первой. Если длина новой строки превысит допустимую (255) длину, то «лишние» символы отбрасываются.  Пример, если а:=’К’; b:=’O’;с:= ‘Т’; х:=а+b+с;d:=a+c+b;  – то в х поместится 'КОТ', а в d – ‘КТО’

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

Процедуры обработки строк:

INSERT(S,T,N);

Вставка подстроки (S) в строковую переменную (T) с символа N

DELETE(S,M,N);

Удаление части (N символов) строковой переменной  (S), начиная с символа M

STR(V,S);

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

VAL(S,V,N);

Преобразование строковой переменной в числовую. S - строка, V - числовая переменная, N - значение первого содержащего ошибку символа.

Функции обработки строковых переменных:

LENGTH(S)

Определение количества символов строковой переменной S

String

Integer

POS(S,T);

Определение первого одинакового левого символа двух строк (строка S и подстрока T)

String, String

Integer

CONCAT(S1,S2,…,SN);

Склеивание строк

String, …, String

String

COPY(S, M, N);

Вырезка подстроки  (N символов) начиная с M-го символа из строковой переменной S

String, Integer, Integer

String

ORD(X)

Определение кода символа. X

Char

Integer

CHR(X)

Определение символа по его коду

Integer

Char

SUCC(X)

Нахождение следующего элемента

Integer, Char

Integer, Char

PRED(X)

Нахождение предыдущего элемента

Перечисляемый

Перечисляемый

   

Примеры программ:

  • Перевернуть введенное с клавиатуры слово


  • Uses crt;

    Var s,s1:string; n,i:integer;

    Begin

    Read(s); S1:=’’;

    N:=length(s);

    For i:=1 downto 1 do S1:=s1+s[i];

    Writeln(s1);

    Repeat until keypressed;  End.

  • Подсчитать кол-во предложений. Конец предложения - ., !, ?


  • User crt;

    Var s:string; n,i,sum:integer; m:char;

    Begin

    Read(s); Sum:=1; N:=lenght(s); M:=’ ‘;

    For i:=1 to n do Begin

    If s[i]=m then sum:=sum+1;

                               End;

    Writeln(sum); Repeat until keypressed;  end.

  • Разработать функцию удаления символов из строки.


  • Uses crt;

    Var m,n,l:integer; s,w:string;

    Function ddd(s:string; m,n:integer):string;

    Var g1,g2,w:string; l,k:integer;

    Begin

    L:=length(s);  G1:=’’;

    For k:=1 to m-1 do g1:=g1+s[k];

    Writeln(g1);

    G2:=’’;

    For k:=m+n to l do g2:=g2+g2+s[k];

    Writeln(g2);

    W:=g1+g2;  Writeln(w);

    Ddd:=w;

    End;

           Begin

    Readln(s); Writeln(s);

    Readln(m,n);  W:=ddd(s,m,n);  Writeln(w);

    Repeat until keypressed;

    end.

  • Зашифровать текст, где каждый символ заменяется на символ, отстоящий по таблице ASCI – кодов дальше на 3 символа


  • Uses crt;

    Var s,r:string; n,i:integer;

    Begin

    R:=’’;

    Readln(s);

    For i:=1 to n do

    Begin

    N:=ord(s[i]);

    R:=r+chr(n+3);

    End;

    Writeln(s);

    Writeln®;

    Repeat until keypressed;

    end.


Содержание раздела