Тема урока: «Строковые переменные. Решение задач»
Учитель:Манджиева Татьяна Тавкаевна
Тип урока:обобщающий урок
Цели и задачи урока:
повторить и обобщить знания о строковых переменных;
развитие познавательного интереса, творческой активности учащихся;
Оборудование: ПК, проектор, доска, экран.
План урока:
Орг. момент.
Повторение изученного материала.
Решение задач.
Отладка программ на компьютере.
Итог урока
Ход урока:
Орг. момент.
Повторение изученного материала.
-Что называется строкой в Паскале?
-Как описывается в Паскале строковая переменная?
Определить значения функций, если:
S:=’informatika’ s1:=’zanimatelnaya ’
Length(S)
Pos(s, 5,3)
Copy (s,3,6)
Insert (s1,s,14)
Решение задач
Решим задачу: "Введенную строку вывести на экран по одному символу в строке экрана".
Program Str2;
Var
S : String;
I : Byte;
Begin
Writeln('Введитестроку');
Readln(S);
For I:=1 to Length(S) do {организуем цикл, начиная с первого символа}
Writeln(S[I]) {строки, до последнего (номер последнего}
{совпадает с количеством символов строки S) }
End.
Следующая маленькая программа выводит на экран кодовую таблицу:
Program Str3;
Var
I : Byte;
Begin
For I:=32 to 255 do
Write('VV',I:4, '-',Chr(I))
End.
Цикл в программе начинается с 32 потому, что символы с кодами от 0 до 31 являются управляющими и не имеют соответствующего графического представления.
Задача: «Определить, является ли введенная строка «перевертышем». Перевертышем называется такая строка, которая одинаково читается с начала и с конца. Например, «казак» и «потоп» - перевертыши, «канат» - не перевертыш».
Поступим следующим образом: из введенной строки сформируем другую строку из символов первой, записанных в обратном порядке, затем сравним первую строку со второй; если они окажутся равны, то ответ положительный, иначе - отрицательный. Естественно, предложенный способ решения не является единственно возможным.
Program Str4;
Var
S,B : String;
I : Byte;
Begin
Writeln('Введитестроку');
Readln(S);
B:=''; {Переменной B присваиваем значение "пустая строка"}
For I:=1 to Length(S) do
B:=S[I]+B; {Конкатенация.Символы строки S пристыковываются к}
{переменной B слева. Самым левым окажется последний.}
If B=S Then Writeln('Перевертыш') Else Writeln('Неперевертыш')
End.
Число, записанное в строковую переменную, естественно числом не является, но очень часто требуется его все же использовать в качестве числа. Для этого нужно произвести преобразование типа. Перевод строкового представления числа в числовое выполняет в Паскале оператор Val.
Его формат:
Val(S,X,C);
Здесь S - строка, содержащая число, X - числовая переменная, в которую будет помещен результат, С - переменная целочисленного типа, в которую помещается первого встреченного в S отличного от цифры символа. Если после выполнения оператора Val переменная С имеет значение 0, то это означает, что преобразование типа прошло совершенно успешно и в строке нецифровых символов не встретилось.
Противоположное действие осуществляет оператор Str. Формат оператора:
Str(X,S);
X - число (либо арифметическое выражение), S - строковая переменная.
В переменную S попадает строковое представление числа X. Это нужно, например, при необходимости выводить на экран числа в графическом режиме (будет изучено позже), так как стандартные процедуры вывода на экран там работают только со строковыми величинами.
Для иллюстрации рассмотрим такую задачу:«Найти сумму цифр введенного натурального числа». Используя только числовые переменные, решить ее можно, но предлагаемое здесь решение интереснее и проще.
Program Str5;
Var
S : String;
I,X,A,C : Integer;
Begin
Writeln('Введите натуральное число');
Readln(S); {Число вводится в строковую переменную}
A:=0;
For I:=1 To Length(S) Do
Begin
Val(S[I],X,C); {Цифровой символ превращается в число}
A:=A+X {Цифры суммируются}
End;
Writeln('Суммацифрравна ',A)
End.
функция Pos(SN,S) возвращает номер символа, с которого в строке S начинается подстрока SN (позицию первого вхождения подстроки в строку). Если такой подстроки нет, то возвращается ноль.
Пример их использования:
«Во введенной строке заменить все вхождения подстроки 'ABC' на подстроки 'KLMNO'»
Program Str6;
Var
S : String;
A : Byte;
Begin
Writeln('Введитестроку');
Readln(S);
While Pos('ABC',S)<>0 Do
Begin
A:= Pos('ABC',S);
Delete(S,A,3);
Insert('KLMNO',S,A)
End;
Writeln(S)
End.
Отладка программ на компьютере.
Итог урока.
Типичные ошибки при составлении и отладке программ в Паскале.
Оценки за урок.