Урок 36. Тема урока: Строковый тип данных (1 час).
Цель урока: систематизация знаний и навыков учащихся по применению строкового типа данных.
Общие замечания: при изучении строкового типа данных и решении задач обработки строк следует придерживаться методики постепенного усложнения заданий с обязательной отработкой алгоритмов, которые в данной теме можно отнести к «стандартным»: подсчёт количества символов с заданным свойством, удаление заданных символов, выделение слов из строки (с одним и несколькими пробелами между словами).
Примерный ход урока:
Урок можно начать с выявления того, как учениками усвоили материал учебника по вопросам представления строкового типа данных, применения стандартных процедур и функций их обработки. Целесообразно подготовить небольшой тест или вопросник, который выполняется учащимися фронтально или индивидуально (затем обсуждается). В вопроснике следует затронуть особенности представления и обработки строковых величин. Например:
Дано описание: var S: string [7] ;a) Какой объём памяти будет занимать данная строка?
b) Чему будет равна строка после выполнения команды: S:=’информатика’;?
Какого типа должны быть переменные C, D чтобы корректно выполнялись команды: С:=S[5]; D:=Copy(S,5,1); Будут ли отличаться результаты выполнения команд: S:=S+’*’; иS:=’*’ +S? Почему? Определите отношения (больше, меньше) между строками: ‘AAAAAAA’ и ‘AC’; ‘DDDD’ и ‘dddd’. Объясните свой ответ.
Затем обсудите решение домашних заданий, особенно №8-10.
1. В задаче №8 (вставка пробела после каждого символа) обратите внимание на особенность работы цикла с параметром и процедуры insert. Часто ученики пишут следующий цикл: for i:=1 to length(s) do insert(' ', s, i+1);, забывая, что при вставке символа часть строки сдвигается вправо. В данной задаче необходимо использовать цикл Downto или циклы While или Repeat.
2. К задаче №9 можно показать несколько способов построения алгоритма: симметричный обмен символов относительно середины строки и посимвольное накопление новой строки – перевёртыша из символов исходной строки.
3. В задаче №10 решений может быть несколько, но, также как в задаче №8, нельзя использовать следующий цикл с параметром:
For i:=1 to length(s) do if s[i]= ' ' then delete(s, I,1);
так как параметр автоматически увеличивается на 1, и второй из двух подряд идущих пробелов будет пропущен. Оптимальным является алгоритм:
While pos(' ',s)>0 do delete(s, pos(' ',s),1);
Далее целесообразно выполнить упражнение №11 и обратную к ней задачу. Затем можно предложить учащимся, используя справочную систему, изучить работу процедур Val и Str. Составить программы для проверки их работы.
Домашнее задание.
Из практической работы №3.5 выполнить упражнения №1-6, 9 (Примечание: данные задания направлены на анализ символов строки, подсчет количества определённых, применение стандартных подпрограмм, применение алгоритмов удаления и вставки символов).
Урок 37. Тема урока: Строковый тип данных. Выделение слов из строки(1 час).
Цель урока: систематизация знаний и навыков учащихся по применению строкового типа данных. Освоения алгоритмов выделения слов из строки.
Примерный ход урока: Обсудите домашнее задание, обратите внимание учащихся на наиболее эффективные алгоритмы. Некоторые комментарии к решениям:
В задаче №1 достаточно подсчитать количество пробелов. Число слов на 1 больше (учитывается последнее слово). В задаче №2 анализируются символы, стоящие после пробелов и самый первый символ строки. В задаче №5 закрепляются навыки безошибочного удаления символа. В задаче №6 необходимо использовать функцию Pos.Далее следует решить задачу, алгоритм которой будет использоваться при решении других: Дана строка, заканчивающаяся точкой. Вывести слова на экран, по одному в строке. Подсчитать количество слов.
Сначала составьте программу для случая, когда слова в строке отделяются друг от друга одним пробелом, затем следует обсудить алгоритм с анализом строки, в которой между словами несколько пробелов.
Приведём фрагменты программ:
Между словами 1 пробел | Между словами несколько пробелов |
readln(s); k:= 0; slovo:=''; for i:=1 to length(s) do if (s[i]<>' ')and(s[i]<>'.') then slovo:=slovo+s[i] else begin writeln(slovo); slovo:=''; inc(k) end; | readln(s);k:= 0; slovo:=''; For j:=1 to length(S) Do If (S[j]<>' ') and (S[j]<>'.') then slovo:= slovo+S[j] else begin if s[j-1] <>' ' then begin inc(k); writeln(Slovo); end; slovo:=''; end; |
В конце занятия можно провести небольшой тест на проверку знаний стандартных подпрограмм обработки строк и их применение.
Домашнее задание. №7,8,10, 11 из практической работы №3.5 – задания на обработку слов строки.
Урок 38. Тема урока: Строковый тип данных. Практикум по решению задач. (1 час).
Цель урока: систематизация знаний и навыков учащихся по применению строкового типа данных. Освоение алгоритма выравнивания текста, решение задач 2 уровня.
Примерный ход урока:
1. Проверка домашнего задания, представление программ учащимися.
2. Обсуждение программы из примера 3 §2.2.13 (выравнивание текста). Учащиеся самостоятельно работают с текстом учебника, набирают и отлаживают программу.
Следует выяснить, правильно ли ученики поняли суть алгоритма решения задачи: вставка по 1 пробелу после каждого слова до конца строки, затем снова по 1 пробелу от начала до конца строки и т. д. до тех пор, пока длина строки не станет равна заданному значению. Пусть ученики составят комментарии к программе:
j:=1;
While length(S)<L Do
Begin
{как только индекс символа станет равен длине строки, необходимо вернуть его в начало строки}
j:=j mod length(S); if j=0 then j:=1;
If (S[j]<>' ') and (S[j+1]=' ')
Then
Begin
Insert(' ',S, j+1); {вставка пробела после слова}
j:=j+1 {переход к вставленному пробелу}
End;
j:=j+1 {переход к следующему символу}
End;
Затем учащиеся самостоятельно или в парах решают – по 1 задаче уровня 2 практической работы №3.5 (по вариантам заданий, составленных учителем).
Домашнее задание. Выполнить 2 задачи других вариантов.
Урок 39. Тема урока: Строковый тип данных. Практикум по решению задач. (1 час).
Цель урока: систематизация знаний и навыков учащихся по применению строкового типа данных. Решение задач 2 уровня.
Примерный ход урока:
Взаимопроверка выполнения домашних индивидуальных заданий.
Цель данной работы: развитие навыков анализа программ, критического мышления, взаимообучения.
Учащихся можно разбить на группы по 3 человека. В каждой группе учащиеся представляют друг другу тексты программ к своим индивидуальным заданиям, объясняют алгоритмы работы, сравнивают решения. Одноклассники оценивают эффективность программ, в случае необходимости исправляют ошибки.
Затем сдают решения учителю или можно организовать фронтальное обсуждение решений.
Домашнее задание. Задание 25,26 уровня 3 практической работы №3.5 .
Уроки 40-41. Тема урока: Строковый тип данных. Практикум по решению задач.(2 часа).
Цель урока: систематизация знаний и навыков учащихся по применению строкового типа данных. Решение задач 3 уровня.
Примерный ход уроков:
Учащиеся демонстрируют решение домашних заданий. Самостоятельно работают над следующими заданиями из практикума, консультируются с учителем.
Оценивается качество и количество решённых задач, уровень самостоятельности.
В конце сдвоенного занятия можно фронтально обсудить наиболее интересные задачи.


