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

Введение

Типы данных



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

Для описания множества допустимых значений величины и совокупности операций, в которых может участвовать данная величина, используется указание её типа данных. Тип данных (data type) – множество величин, объединенных определенной совокупностью допустимых операций. Каждый тип данных имеет свой диапазон значений и специальное зареверзированное слово для описания.



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

Строка представляет собой последовательность символов кодовой таблицы персонального компьютера. При использовании в выражениях строка заключается в апострофы. Количество символов в строке (длина строки) может динамически изменяться от 0 до 255. Идентификатор стро-кового типа данных – слово String. Примеры описания переменных типа  String:

Var Str1: String [10];

Var Str2: String;

Var Str3: String [13];

В квадратных скобках указывается максимальный размер (длина) строки. Если он не указан (как в описании переменной Str2), то длина строки считается равной 255 символам. Заметим, что строку можно рассматривать как одномерный массив символов – к любому символу строки можно обращаться по его номеру. Первый символ строки (с индексом 0) содержит фактическую длину строки. Для ввода и вывода переменных типа String используются процедуры Read (Readln) и Write (Writeln).Строки вводятся и выводятся не поэлементно, как массивы, а сразу целиком. Следующий простой пример иллюстрирует сказанное.

Program My14_5;

Var s: String; w: String [10]; v: String [5]; i, j:Integer;

Begin

Readln (v); Writeln (v);

Writeln (Integer (v [0]));

Readln (w); Writeln (w); Writeln (Ord (w [0]));

Readln(s); Writeln(s);

Writeln (Integer(s [0]));

For i: =1 to Ord(s [0]) do  Begin

For j: = to i-1 do Write (‘  ‘);

Writeln(s [i]);

End;

Readln;

End.

Если ввести строки v и w большей длины, чем указано в описании, они «обрезаются». Операторы Writeln(Integer(v[0])) и Writeln(Ord(w[0])) обеспечивают вывод значения длины строки. Если изменить первый оператор на Writeln(v[0]), то вместо цифрового значения на экран выводится «непонятный» символ. Попробуйте объяснить этот результат и понять смысл преобразования Integer(v[0]). Последние операторы этого примера демонстрируют обращение к элементам строки. Вывод символов строки s на экран осуществляется «лесенкой».

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

Сравнение строк производится посимвольно слева направо: сравниваются коды соответствующих символов до тех пор, пока не нарушится равенство, при этом сразу делается вывод о знаке неравенства. Две строки называются равными, если они равны по длине и совпадают посимвольно.  



Примеры

‘Balkon’ < ‘balkon’ (Ord (‘B’) < Ord (‘b’));

‘balkon’ > ‘balken’ (Ord (‘o’) > Ord (‘e’));

‘balkon’ > ‘balk’ (длина первой строки больше);

‘кошка’ > ‘кошка’ (длина первой строки больше);

‘Кот’» = ‘Кот’ (строки равны по длине и совпадают посимвольно).

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

Str1: = 'У Егорки’; Str2: = ‘всегда отговорки’;









































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



Тип

Вызов

Параметры

Действие

Процедура

Delete(s, p, n)

Var s: String;

P, n: Integer;

Удаляются n  символов из строки s, начиная с позиции p

Процедура

Insert (w, s, p)

W: String;

Var S: String;

P: Integer;

В строку S, начиная с позиции p, вставляется строка w

Процедура

Str (v, s)

V: Integer или 

V: real;

Var s: string;

Число v  преобразуется в строку s

Процедура

Val(s, v, w)

S: String;

Var v: Integer или

 Var v: Real;

Var w: Integer;

Если строка s представляет собой правильную запись числа, то это число записывается в переменную v, при этом значение w  = 0. В противном случае строка состоит не только из цифр – преобразование не выполняется, w<>0 – признак ошибки

Функция

Concat (s1, s2,…, sm), функция возвращает значение типа String

S1, s2, … sm: String;

Строки s1, s2, …, sm записываются одна за другой. Результат не  превышает 255 символов.  Можно просто складывать строки s1+s2+…+sm

Функция

Copy(s, p, n)

функция возвращает значение типа  String

S: String;

P, n: Integer;

Из строки S, начиная с позиции P, выбираются n символов.

Функция

Length(s)

функция возвращает значение типа  Integer

S: String;

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

Функция

Pos (w, s)

функция возвращает значение типа  Integer

W, s: String;

В строке s отыскивается первое вхождение строки w (номер позиции). Если вхождения нет, то функция возвращает значение 0. 





Примеры.

В приведенных примерах переменные s1,s2,s3 имеют тип String, p,g – тип Integer.

s1: =’ У Егорки всегда отговорки ’;

Delete (s1, 9,7);

Результат: s1=’У Егора отговорки’.

s1: =’ У Егорки всегда отговорки ’;

s2:=’Матрены и’;

Insert (s2, s1, 3);

Результат:

S1=’У Матрены и Егорки всегда отговорки’.

p:=1234; q:=34.5;

Str (p, s1); Str (q, s2);

Результат: s1=’1234’, s2= =’34.5’.

s1: = ‘555’; s2:=’23.345’; s3:=’34rr2’;

Val (s1, p, w); Val (s2, q, w); Val (s3, p, w);

Результат: в первом случае p=555, w=0; во втором случае q=23,345, w=0; в третьем случае w<>0, значение p не определено.

s1: =’У Егорки всегда отговорки, ’;  

s2: =’У Миладки всегда шоколадки’;

s3: =Concat (s1, s2); (или s3: =s1+s2); 

Результат: s3=’У Егорки всегда отговорки, у Миладки всегда шоколадки’;

s1=’У Егорки всегда отговорки, у Миладки всегда шоколадки’

s2: =Copy (s, 27, 26);

Результат: s2:=’У Миладки всегда шоколадки’.

s1: =’У Егорки всегда отговорки ’;

p: =Length (s1);

Результат: p=25.

s1:=’У Егорки всегда отговорки ’;

p: =Pos (‘0’, s);

Результат: p=5.



Продолжите примеры. Напишите программу для исследования работы перечисленных процедур и функций. Обратите особое внимание на граничные условия (например, выясните, что получается, если длина результата больше 255). В этой работе можно использовать приведенные ниже короткие примеры.

Подсчет количества вхождений данного символа (параметр q) в строку (параметр st).



Function QChar (q: Char; st: String): Byte;

Var I, k: Byte;

Begin

k: =0;

For i: =1 To Length (st) Do If st [i]=q Then Inc (k);

Qchar: =k

End;

Удалить среднюю букву при нечетной длине строки и две средние буквы при четной длине строки.

Procedure MiDel (Var st: String);

Var k: Byte;

Begin

k: =Length (st);

If k Mod 2=1 Then Delete (st, k Div 2+1, 1)

Else Delete (st, k Div 2, 2)

End;

Заменить все вхождения подстроки w в строке st на подстроку v.

Procedure Ins  (w, v: String; Var st: String);

Var k: Byte;

Begin

While Pos (w, st)<>0 Do Begin

k: = Pos (w, st);

Delete (st, k, Length (w));

Insert (v, st, k)

End

End;

Подсчитать сумму цифр, встречающихся в строке.

Function Sum  (st: String): Integer;

Var i, k, d, s:Integer;

Begin

s: =0;

For i: =1 To Length (st) Do Begin

Val (st [i], d, k);

If k=0 Then s: =s+d

Sum: =s

End;

Экспериментальный раздел занятия

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

Program My14_6;

Const n=20; m=10; {Количество слов в тексте и количество букв в слове. Естественно, что эти параметры программы можно изменять}

Type TString=String [m];

Var A: Array [1..n] Of Tstring;

s: String;

k, i:Integer;

Procedure DelPr (Var s: String);

{Удаляем пробелы в начале текста.}

Begin

While (s [1]=’  ‘) And (s<>’ ‘) Do Delete (s, 1, 1)

End;

Function GetWord (Var s: String): Tstring;

{Выделяем слово, удаляем его из текста и убираем пробелы после слова.}

Begin

GetWord: =Copy (s, 1, Pos (‘  ‘, s)-1);

Delete (s, 1, Pos (‘  ‘, s));

DelPr (s)

End;

Begin

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

Readln (s);

S: =s+’  ‘;

{Добавляем символ пробела в конец текста. Зачем?}

DelPr (s); {Удаляем пробелы в начале текста.}

k: =0;

While s<>’ ‘ Do Begin {Пока текст не пустой.}

Inc (k);

A [k]: =GetWord (s) {Берём слово из текста.}

End;

For i: =1 To k Do Writeln (A [i]);

Readln

End.

Удалите вызов процедуры DelPr(s) из основной программы, а функции GetWord переставьте этот вызов в ее начало. Что изменится в работе программы? На каких исходных данных она не будет правильно работать? Что произойдет, если в конец текста не добавлять символ пробела? В процедуре DelPr измените цикл 

While (s[1]=’  ‘) And (s<>’  ‘) Do Delete (s, 1, 1)

на

While (s[1]=’  ‘)  Do Delete (s, 1, 1).

 Продолжите эксперименты с программой.

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

Program My14_7;

Var i:Integer;

s: String;

Begin

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

Readln (s);

i: =1;

While i<Length(s) Do Begin

If (s [i]=‘,’) And Not (s [i+1]=’  ‘)

Then Insert (‘  ‘, s, i+1);

Inc  (i)

End;

Writeln (s);

Readln

End.

Задания для самостоятельной работы

1.Написать программу для вывода последовательностей символов:

а)ZYYXXX…AA..AA;

в)ABC…ZZBC…ZZZC…ZZ..ZZ.

2.Составить программу, которая выводит True, если в заданной строке буква ‘A’ встречается чаще, чем буква ‘B’, и False в противном случае.

3.Проверить, правильно ли в заданном тексте расставлены круглые скобки (т.е. находится ли справа от каждой открывающей скобки соответствующая ей закрывающая скобка, а слева от каждой закрывающей – соответствующая ей открывающая).

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

5.Удвоить вхождение некоторой буквы в текст. Например, при удваивании буквы ‘а’ текст ‘ мама папа’ должен превратиться в текст ‘маамаа паапаа’.

6.Даны две строки. Вывести буквы, встречающиеся и в той и другой строках.

7.Дан текст. Вывести все слова, начинающиеся с прописных букв латинского алфавита.

8.Дан текст. Определить:

длину самого короткого и самого длинного слов;

количество слов, начинающихся и оканчивающихся одной и той же буквой;

количество слов, в которых содержится хотя бы одна заданная буква;

количество слов, которые содержат заданную букву определенное количество раз;

количество слов, являющихся палиндромами.

9.Дан текст. Вывести слова, встречающиеся в тексте по одному разу.

10.Дан текст. Вывести различные слова.

Примечание. Термин ‘текст’ в условиях задач следует понимать в смысле первого примера экспериментальной части данного занятия.







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



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

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

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

var s,x,y,z:string; 

begin 

x:='turbo'; 

y:='pascal'; 

z:=x+' '+y; { z='turbo pascal' } 

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

for c:='a' to 'z' do s:=s+c; { s='abcd..xyz' } 

writeln(s); 

end. 

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

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

'abcd' > 'abcD' { 'd'>'D' } 

'abcd' > 'abc' { 'd'>'' } 

'abc' < 'axxc' { 'b'<'x' } 

'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. Раздать тетради для проверочных работ.



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. Поиск подстроки.

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

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

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

Пример 2

program primer;

             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) <=’я’) ) or ( (copy (a, i. 1) >=’А’) and 

(copy  (a, I, 1) <=’Я’) ) then  m:=m + 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. Домашнее задание: Написать программу для определения количества четных цифр в числе.





Урок 10

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

Тема: «Подготовка к контрольной работе».

Цель: • совершенствование навыков составления программ;

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

           • воспитание у учащихся самостоятельности.



План.

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

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

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

4. Итог, домашнее задание.



Ход урока.

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

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



program primer;

             var  a1,b : string;

                    i, k, s, b1: integer;  a: longint;   

begin

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

        readln (a);

        str (a, a1);

        s:=0;

        for i:=1 to length (a1) do

        begin

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

            val (b, b1, k);

            if b1 mod 2 = 0 then s:=s+1 

        end;

          write (‘количество четных цифр =’, s);

end.



III. Задания для самостоятельной работы.



1. Найти сумму нечетных цифр числа Х.

2. Определить каких цифр больше в записи числа Х: четных или нечетных.

3. Найти произведение цифр заданного числа.

4. Даны два слова. Верно ли, что первое слово начинается на ту же букву, которой оканчивается второе слово?

5. В заданном числе заменить все цифры 0 на цифры 9, а все 1 – на 8; к полученному числу прибавить 999.



IV.  Домашнее задание: просмотреть все решенные задачи.







Урок 11

Вид урока: контрольная работа.

Тема: «Строковые переменные».

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

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

          • воспитание у учащихся самостоятельности.



План.

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

2. Самостоятельная работа учащихся.

3. Итог.



Ход урока.



I.  Раздать тетради для проверочных работ.



II. Вариант 1

1. Используя операции копирования и конкатенации получить из слова БАШКОРТОСТАН новые слова:

                          корт    бак    шок    сто   



2. Написать программу преобразования слов:

              оратор – оракул – караул - каркас   

    

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





Вариант 2

1. Используя операции копирования и конкатенации получить из слова БАШКОРТОСТАН новые слова:

                          тост   оса   банка   рана   



2. Написать программу преобразования слов:

              процесс – провода – природа - призрак   

    

3. В данном тексте подсчитать количество букв «К» и «Л».





Вариант 3

1. Используя операции копирования и конкатенации получить из слова БАШКОРТОСТАН новые слова:

                          стан   рот   ток   коса   



2. Написать программу преобразования слов:

              груша – гроза – проза - проба   

    

3. В данном тексте заменить все буквы  «Р» на «Л».

Вариант 4

1. Используя операции копирования и конкатенации получить из слова БАШКОРТОСТАН новые слова:

                          торт     кора     тон      сор   



2. Написать программу преобразования слов:

              метка – сетка – седло - сопло   

    

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



IV. Собрать тетради.











































ЛИТЕРАТУРА

1.Абрамов, С.А., Зима В.С. Начала программирования на языке Паскаль. – М.: Наука, 1987

2.Абрамов С.А., Трифонов Ф.П., Трифонова Г.Н. Введение в язык Паскаль: Учебное пособие. – М.: Наука, 1988

3.Бабушкина И.А., Бушмелева Н.А., Окулов С.М., Черных С.Ю. Конспекты занятий по информатике(практикум по Турбо Паскалю): Учебное пособие. – Киров: Издательство ВГПУ, 1997

4.Николаев А.Б., Акатнова Л.А., Алексахин С.В. и др. Турбо-Паскаль в примерах. Книга для учащихся 10 – 11 кл. –М. Просвещение, 2002

5.Окулов С.М. Основы программирования. Газета Информатика, приложение к газете Первое сентября.№№42-48/2000, 6-8/2001

6.Лахтин А.С., Искакова Л.Ю. Языки и технология программирования. Начальный курс. Учебное пособие. Екатеринбург, 1998.

7.Белова Т.Н.,  Конспекты лекций по основам алгоритмизации и программирования (практикум по Турбо Паскалю).Учебное пособие.

8.Попов В.Б. Turbo Pascal для школьников. Москва.  Финансы и статистика. 2003