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

–PAGE_BREAK–РАБОТА СО СТРОКАМИ

Тип String (строка) в Турбо Паскале широко используется для обработки текстов. Этот тип является стандартным и во многом похож на одномерный массив символов Array [0..N] of Char. Значение N соответствует количеству символов в строке и может меняться от 0 до 255. Символы, входящие в строку, занимают позиции с 1 до N. Начальный байт строки с индексом 0 содержит информацию о ее длине, т.е. это символ с кодом, равным длине строки.

Можно также описывать переменные типа String[K], где K — целое число не больше 255. Так определяются строки с длиной не больше K. Этот тип уже не является стандартным. С символами строки можно работать как с элементами массива из символов, но в отличие от массивов, строки можно вводить целиком, сравнивать друг с другом и сцеплять операцией “+”.

ПРИМЕР: Работа со строками.

vars,x,y,z:string;

begin

x:=’turbo’;

y:=’pascal’;

z:=x+’ ‘+y; { z=’turbo pascal’ }

s:=”; { пустаястрока }

forc:=’a’ to ‘z’ do s:=s+c; { s=’abcd..xyz’ }

writeln(s);

end.

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

ПРИМЕР
: Сравнение строк.

‘abcd’ > ‘abcD’ { ‘d’>’D’ }

‘abcd’ > ‘abc’ { ‘d’>” }

‘abc’ { ‘b’

‘abcd’ = ‘abcd’

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

·     Функция Length(s) выдает длину строки s.

·     ФункцияConcat(s1,s2,..,sn) возращаетстрокуs1+s2+..+sn.

·     Функция Copy(s,p,k) возвращает фрагмент строки s, который начинается в позиции p и имеет длину k.

·     Функция Pos(s1,s) ищет первое вхождение подстроки s1 в строку s и возвращает номер первого символа s1 в строке s или 0 если не нашли.

·     Процедура Delete(s,p,k) удаляет из строки s фрагмент, который начинается в позиции p и имеет длину k.

·     Процедура Insert(s,s1,p) вставляет в строку s подстроку s1, начиная с заданной позиции p.

Турбо Паскаль позволяет производить преобразования числовых значений в строковые и наоборот. Для этого используются процедуры Str(X:n:d,S) и Val(S,X,e). Первая получает их числа X строку S с изображением этого числа, в которой не менее n символов и из них d знаков после запятой. Параметры n и d необязательные. Вторая процедура получает из строки S число X. При успешном результате e=0.
Урок 1

Вид урока:лекция.

Тема:«Понятие строковой переменной».

Цель:• познакомить учащихся с новым типом переменных;

           • развить память, мышление;

           • воспитание сознательной дисциплины учащихся на уроке;
План.

1. Орг. момент.

2. Изложение нового материала.

3. Закрепление нового материала (решение задач).

4. Итог, домашнее задание.
Ход урока.

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

   Строковое значение заключается в апострофы. Например, ‘A+ B’,     ‘урок’, ‘5 + 4’,    ’45’.

   Строка, не содержащая ни одного символа, называется пустой (  ’  ’).

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

Например, var
 
A
:
string
[5].
   Если количество символов не указано, то оно по умолчанию считается равным 255. Значения строковых переменных задаются либо оператором присваивания ( := ), либо операторами readили readln
,позволяющими вводить эти значения с клавиатуры.
   Напишем программу – приветствие: ЭВМ запрашивает ваше имя, затем выводит сообщение «Здравствуй, …!».

program  privet;

             uses crt;

             var  A: string;

begin

            clrscr;

            write (‘введитевашеимя’);

            readln (A);

            write (‘Здравствуй, ’, А, ‘!’);

            readln

end.
   К строкам можно применять операцию объединения «+», называемую сцеплениемили  конкатенацией.

 

 Например,  а:= ‘пар’                                      а:=’20’

                       в:= ‘ад’                                        в:= ‘04’

                      с:=а+в   (парад)                           с:= а+в  (2004)
Физкультминутка.
III
.Разобрать с ребятами программу.

program  slovo;

              uses crt;

              var a, b, c, d, k, l, m, n: string;

begin

           clrscr;

           a:= ‘пар’;

           b:= ‘ом’;

           c:= ‘с’;

           d:= ‘ад’;

           k:= a + b;    l:= c + b;   m:= c + d;   n:= a + d;

           write (k, ‘ ’, l, ‘ ‘, m, ‘ ‘, n  );

           readln

end.

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

1) выучить определения;

2) написать программу получения слов: пароход, паровоз, пароварка.
 
Урок 2

Вид урока:практическая работа.

Тема:«Объединение строк».

Цель:• совершенствование ЗУН учащихся;

          • развитие алгоритмического мышления, памяти;

          • воспитание бережного обращения с компьютерной техникой.
План.

1. Орг.момент.

2. Проверка домашнего задания.

3. Самостоятельная работа учащихся за компьютером.

4. Итог, домашнее задание.
Ход урока.

I
.Провести инструктаж по ТБ.
II. Проверить домашнее задание (вызвать одного ученика к доске).

Пока ученик пишет программу на доске, провести устный опрос.

— дайте определение строки;

— какая строка называется пустой?

— какие переменные называются строковыми?

— какую операцию можно применять к строковым переменным?
Физкультминутка.
III
.Задания для самостоятельной работы.
1. Применить операцию конкатенации к переменным A, B, C, Dи Eтак, чтобы получилось указанное в таблице значение переменной Х

A

B

C

D

E

X

ворон

про

ил

а

енка

ворона проворонила вороненка

кормила

ку

ка

ш

он

кукушка кормила кукушонка

черт

заказать

— моя

еж

мечта

заказать чертеж – моя мечта

пар

ад

надо

смотреть

по

надо посмотреть парад

двор

а

е

трав

на

на дворе трава

2. Составить программу – диалог.
IV
.Домашнее задание: повторить определения.

 
Урок 3

Вид урока:лекция.

Тема: «Функции  для работы со строками».

Цель: • научить составлять слова из слов, используя функцию copy
.

          • развитие алгоритмического мышления;

          • воспитание интереса к предмету.
План.

1. Орг.момент.

2. Проверочная работа.

3. Объяснение нового материала.

4. Закрепление изученного материала.

5. Итог, домашнее задание.
Ход урока.
II
.Проверочная работа.

1. Определение строки.

2. Определение строковой переменной.

3. определение пустой строки.

4. Применить операцию конкатенации к переменным A, B, C, D, Eтак, чтобы получилось значение переменной Х.

A

B

C

D

E

X

висит

кар

ти

На

стене

картина висит на стене

паро

шел

по

В

ход

пароход пошел в поход

 
III
.   Копирование подстроки

   Операция копирования подстроки позволяет делать вырезки из строк. Вырезка представляет собой последовательность смежных символов, извлеченную из строки. Так из слова «стихотворение» можно, например, вырезать следующие слова: «стих», «тихо», «творение», «вор».

    Для копирования подстроки служит процедура copy
(
a
,
i
,
n

), которая копирует nсимволов из строки a, начиная с позиции i
.

   Например, А:= ‘Башкортостан’

                      В:= сopy(А, 4, 4)        корт

                      С:= copy(А, 9, 4)        стан
Далее следует разобрать программу.

program primer;

             var   a, b, c, d, e: string;

begin

          a:= ‘стихотворение’;

          b:= copy (a, 1, 4);

          c:= copy (a, 2, 4);

          d:= copy (a, 6, 8);

          e:= copy (a, 7, 3);

          write (b, ‘ ‘, c, ‘ ‘, d, ‘ ‘, e);

          readln

end.  

   В результате работы этой программы получим: стих тихо творение вор
   С помощью операции копирования и конкатенации из одного слова можно получить новые слова.
Физкультминутка.
IV
.Получить из слова лекарство слова: валет, кресло, сетка.

program primer;

              var a, b, c, d: string;

begin

        a:= ‘лекарство’;

        b:= copy (a, 8, 1) + copy (a, 4, 1) + copy (a, 1, 2) + copy (a, 7, 1);

        c:= copy (a, 3, 1) + copy (a, 5, 1) + copy (a, 2, 1) + copy (a, 6, 1) + copy (a, 1, 1) +

        + copy (a, 9,1);

        d:= copy (a, 6, 1) + copy (a, 2,1) + copy (a, 7, 1) + copy (a, 3, 2);

        write (b, ‘ ‘, c, ‘ ‘, d);

end.
 

         
V
. Домашнее задание:

1) выучить определения;

  2) из слова треугольник получить слова угол, трон, кол.

Урок 4

Вид урока:практическая работа.

Тема: «Функция
copy
».

Цель: • совершенствование ЗУН учащихся;

          • развитие алгоритмического мышления, внимания, памяти;

          • воспитание бережного обращения с компьютерной техникой.
План.

1. Орг.момент.

2. Проверка домашнего задания.

3. Самостоятельная работа за компьютерами.

4. Итог, домашнее задание.
Ход урока.
I
.Провести инструктаж по ТБ.
II
. Проверка домашнего задания: вызвать одного ученика к доске, остальные отвечают на вопросы учителя.

1. Для чего предназначена функция copy?

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

a:= copy(‘информатика’, 3, 5):

b:= copy(‘информатика’, 10, 2)     +      copy(‘информатика’, 5, 1)      +

+    copy(‘информатика’, 8, 1)     +    copy(‘информатика’, 7,1);

c:= copy(‘информатика’, 8, 2) + сopy(‘информатика’, 2, 1)+copy(‘информатика’, 7, 1)?
Физкультминутка.
III. Задания для самостоятельной работы.
  1.  Составить программу получения из слова «лекарство» слова:

А) крот, товар, тоска.

Б) стрела, треск, совет.

В) отвар, сквер, сектор.

Г) село, сетка, сова.
   2. Из слова «муха» получить «слон».
IV
. Домашнее задание: повторить функцию copy.
Урок 5.

Вид урока:лекция.

Тема: Процедуры для работы со строковыми переменными.

Цель:• научить использовать процедуру для преобразования слов;

           • развитие алгоритмического мышления;

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

1. Орг.момент.

2. Проверочная работа по теме «Функция copy».

3. Объяснение нового материала.

4. Закрепление.

5. Домашнее задание.
Ход урока.
I
.Раздать тетради для проверочных работ.    продолжение
–PAGE_BREAK–
II
.Раздать раздаточный материал. Объяснить задание.
III
.  1. Удаление подстроки.

   Процедура delete
(
a
,
i
,
n
)удаляет nсимволов из строки a, начиная с позиции i
.

      2. Вставка подстроки.

Процедура  insert
(
b
,
a
,
i
)вставляет подстроку bв строку a, начиная с позиции i
.

Пример1.

program primer1;

             var    a, b, c, d: string;

begin

        a:= ‘лекарство’;

        delete (a, 3, 5);

        writeln (a);     {лево}

        delete (a, 3, 1);

        b:= ‘т’;

        insert (b, a, 3);

        writeln (a);     {лето}

        c:= ‘кот’;

        d:= ‘мпо’;

        insert (d, c, 3);

        writeln(c);      {компот}

end.
      3. Поиск подстроки.

   При составлении программ возникает потребность поиска конкретной строки в тексте.

   В TurboPascalдля поиска подстроки служит функция pos
(
b
,
a
)которая отыскивает в строке a
первое вхождение строки b
и возвращает номер позиции, с которой начинается строка b; если подстрока не найдена, возвращается ноль.

   (рассмотреть пример)

Пример 2

programprimer;

             var   a, b, c: string;

                     m, n: integer;

begin

          a:= ‘Жил-был в норе под землей хоббит’;

          b:= ‘был’;

          c:= ‘хоббит’;

          m:=pos(b, a);

          n:=pos(c, a);

          writeln (b, ‘ – ‘,m);       {был— 5}

          writeln (c, ‘ –  ‘, n);       {хоббит— 27}

end.
   4. Определение длины строки.

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

   Для этого служит функция length
(
a
).
Физкультминутка.
IV
. Пример 3.

   Выполнить преобразование слов: форма – корма – корка – кофта.
program primer2;

              var a, b, c, d: string;

begin

        a:= ’форма’;

        write (a);           {форма}

        b:= “к”;

        delete (a, 1, 1);

        insert (b, a, 1);

        write (a, ‘ ‘);       {корма}

        delete (a, 4, 1);

        insert (b, a, 4);

        write (a, ‘ ‘);        {корка}

        delete (a, 3, 2);

        c:= ‘фт’;

        insert (c, a, 3);

        write (a);             {кофта}

end.
Пример4

   В заданной строке А заменить выделенную подстроку на подстроку В. Для поиска позиции, с которой надо произвести замену, воспользоваться функцией поиска подстроки.

А:=’Выдать премию в размере месячного оклада’

В:= ‘годового’
program primer;

             var   a, b, c: string;

                     m: integer;

begin

          a:= ‘Выдать премию в размере месячного оклада’;

          b:= ‘годового’;

          c:=’месячного’;

          m:=pos(c, a);

          delete(a, m, 9);

          insert(b, a, m);

          writeln(a)

end.
V
.Домашнее задание: выполнить преобразование слов: оратор – оракул – караул – каркас.
Урок 6.

Вид урока:практическая работа.

Тема: «Процедуры для работы со строковыми переменными».

Цель:• совершенствование ЗУН учащихся;

          • развитие мышления, внимания;

          • воспитание бережного обращения с компьютерной техникой.
План.

1. Орг.момент.

2. Проверка домашнего задания.

3. Самостоятельная работа за компьютером.

4. Итог, домашнее задание.
Ход урока.

I
.Провести инструктаж по ТБ.
II
. Для проверки домашнего задания вызвать одного ученика к доске.

(выполнить преобразование слов оратор – оракул – караул — каркас)
 Физкультминутка.
III
.Задания для самостоятельной работы.
  1. Выполнить преобразования слов:

А) груша – гроза – проза – проба – сдоба – свара

Б) бисер – бомба – балка – палка – палец

В) метка – сетка – седло – сопло – совет – кювет

Г) нитка – нерка – корка – кирка – книга – пурга
   2.  В заданной строке А заменить выделенную подстроку на подстроку В. Для поиска позиции, с которой надо произвести замену, воспользоваться функцией поиска подстроки.

А

В

1

Продлить каникулы до 1 марта.

февраля

2

Принтер – устройство ввода.

вывода

3

В одном байте содержится 10 бит.

8

4

Диаметр гибкого диска равен 3,5 сантиметрам.

дюймам

IV
. Домашнее задание: повторить функции и процедуры.
Урок 7

Вид урока:лекция.

Тема: «Преобразование строк».

Цель:• научить преобразовывать строки;

           • развивать алгоритмическое мышление;

           • прививать интерес к предмету.
План.

1. Орг.момент.

2. Письменный опрос.

3. Объяснение нового материала.

4. Закрепление.

5. Домашнее задание.
Ход урока.
I
.  Раздать тетради для проверочных работ.
II
. Задания проверочной работы.

    1 вариант                                               2 вариант

1. Функция length.                               1. Функция pos.

2. Процедура insert.                             2. Процедура delete.

3. В строке А заменить выделенную подстроку на строку В.

А

В

1

Процессор служит для хранения данных.

обработки

2

Клавиатура – устройство вывода.

ввода

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

   Для этих целей служат следующие процедуры:

1.
str
(
x
,
a
) – процедура, преобразующая число х в строку символов а.

Например, х:=453

                   str(x, a)    {a=’453’}
2.
val
(
a
,
x
,
k
) – процедура, преобразующая строку а, состоящую из цифр, в соответствующее число х.

   К – переменная типа integer, которой присваивается 0, если преобразование прошло успешно. В противном случае kбудет содержать номер позиции в строке а, где обнаружен ошибочный символ.
Физкультминутка.    
IV
. 1. Составить программу нахождения суммы цифр числа.

(целесообразно вспомнить, как решить задачу с использованием modи div)
program summa;

              var  n, a: string;

                     i, k, s: integer;

begin

         s:=0;

         write (‘введитечисло’);

         readln (n);

         for i:=1 to length (n) do

         begin

             a:= copy (n, i, 1);

             val (a, x, k);

             s:= s + x:

         end;

         write (‘s=’, s)

end.
   2. Написать программу определения количества четных цифр в числе.
program kolvo;

              var  n, a: string;

                     i, k, k1: integer;

begin

         k1:=0;

         write (‘введитечисло’);

         readln (n);

         for i:=1 to length (n) do

         begin

             a:= copy (n, i, 1);

             val (a, x, k);

             if x mod 2 = 0 then k1:= k1 + 1:

         end;

         write (‘четныхцифр’, k1)

end.
V
. Домашнее задание: написать программу, заменяющую все буквы А на О.
Урок 8.

Вид урока:практическая работа.

Тема: «Преобразование строк».

Цель: • совершенствование ЗУН учащихся;

          •  развитие алгоритмического мышления;

          • воспитание бережного обращения с компьютерной техникой.
План.

1. Орг.момент.

2. Проверка домашнего задания.

3. Самостоятельная работа за компьютером.

4. Итог, домашнее задание.
Ход урока.
I
.Провести инструктаж по ТБ.
II
. Вызвать одного ученика к доске. Задание: заменить все буквы А на О. 

program zamena;

              var  n, a, b: string;

                     i: integer;

begin

         write (‘введитетекст’);

         readln (n);

         b:=’O’;

         for i:=1 to length(n) do

         begin

             a:= copy (n, i, 1);

             if (a=’a’) or (a=’A’) then begin delete (n, i, 1 ); insert (b, n, i); end;

             end;

         write (n)

end.
Физкультминутка
.
III
. Задания длясамостоятельной работы. 
1) В данном тексте определить каких букв больше О или А.

2) Определить, есть ли заданная буква в тексте.

3) Посчитать количество букв Р и Н в тексте.

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

5) Дано предложение. Напечатать все его буквы «и».

6) Дано предложение. Определить долю (в %) букв «а» в нем.
IV
.Домашнее задание: Дано предложение. Составить программу, которая выводит столбиком его третий, шестой, девятый и т.д. символы.

   

 

Урок 9

Вид урока: урок решения типовых задач.

Тема: «Решение задач».

Цель: • закрепить навыки работы с процедурами и функциями;

           • развивать алгоритмическое мышление;

           • воспитывать уважение к сопернику, находчивость, умение работать в коллективе.
План.

1. Орг.момент.

2. Проверка домашнего задания.

3. Решение задач.

4. Домашнее задание.
Ход урока.
II
. Для проверки домашнегозадания вызвать одного ученика к доске.

program primer;

             var  a, b:string;

                    i: integer;

begin

        write (‘введитепредложение’);

        readln (a);

        for i:=1 to length(a) do

        if i mod 3 =0 then begin b:=copy (a, i, 1); writeln (b) end;

end.

        
 
III
. Разделить класс на тригруппы. Каждой группе дать задание. Ребята составляют программу, а затем один представитель от команды объясняет решение задачи у доски.

    Задания для групп:

     1. Выбрать из текста все буквы и сформировать другую строку из этих букв, сохранив их последовательность.
program primer;

             var  a, m: string;

                    i: integer;

begin

        write (‘введитетекст’);

        readln (a);

        m:=’’;

        for i:=1 to length(a) do

        if  ( (copy (a, i. 1) >=’a’) and (copy (a, I, 1) =’А’) and

(copy  (a, I, 1)

        write (m);

end.
       
 2. Найти сумму первой и последней цифр числа и разделить ее на 2.
program primer;

             var  a1,b, c: string;

                    i, k: integer;  a, b1, c1: longint;   s, s1: real;

begin

        write (‘введитечисло’);

        readln (a);

        str (a, a1);

        b:=copy(a1, 1, 1);

        c:=copy(a1, length(a1), 1);

        val (b, b1, k);

        val (c, c1, k);

        s:=b1+c1;

        s1:=s/2;

        write (‘s=’, s, ‘s1=’ s1);

end.
          3. Дано число. Заменить все цифры 2 на 5 и разделить новое число на 5.
program primer;

             var  a1,b, c: string;

                    i, k: integer;  a, x: longint;   s:real;

begin

        write (‘введитечисло’);

        readln (a);

        str (a, a1);

        for i:=1 to length (a1) do

        begin

            b:=copy(a1, i, 1);

            if b=’2’ then begin delete (a1, i, 1); insert (‘5’, a1, i) end;

        end;

        val (a1, x, k);

         s:=x/5;

        write (‘a1=’, a1, ‘  s=’ s);

end.
 IV
. Домашнее задание: Написать программу для определения количества четных цифр в числе.    продолжение
–PAGE_BREAK–