Урок 36. Тема урока: Строковый тип данных (1 час). Цель урока: систематизация знаний и навыков учащихся по применению строкового типа данных. Общие замечания: при изучении строкового типа данных и решении задач обработки строк следует придерживаться методики постепенного усложнения заданий с обязательной отработкой алгоритмов, которые в данной теме можно отнести к «стандартным»: подсчёт количества символов с заданным свойством, удаление заданных символов, выделение слов из строки (с одним и несколькими пробелами между словами). Примерный ход урока: Урок можно начать с выявления того, как учениками усвоили материал учебника по вопросам представления строкового типа данных, применения стандартных процедур и функций их обработки. Целесообразно подготовить небольшой тест или вопросник, который выполняется учащимися фронтально или индивидуально (затем обсуждается). В вопроснике следует затронуть особенности представления и обработки строковых величин. Например: 1. Дано описание: var S: string [7] ; a) Какой объём памяти будет занимать данная строка? b) Чему будет равна строка после выполнения команды: S:=’информатика’;? 2. Какого типа должны быть переменные C, D чтобы корректно выполнялись команды: С:=S[5]; D:=Copy(S,5,1); 3. Будут ли отличаться результаты выполнения команд: S:=S+’*’; и S:=’*’ +S? Почему? 4. Определите отношения (больше, меньше) между строками: ‘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 достаточно подсчитать количество пробелов. Число слов на 1 больше (учитывается последнее слово). 2. В задаче №2 анализируются символы, стоящие после пробелов и самый первый символ строки. 3. В задаче №5 закрепляются навыки безошибочного удаления символа. 4. В задаче №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]<>'.') slovo:= slovo+S[j] else begin if s[j-1] <>' ' then begin inc(k); writeln(Slovo); end; slovo:=''; end; then В конце занятия можно провести небольшой тест на проверку знаний стандартных подпрограмм обработки строк и их применение. Домашнее задание. №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 уровня. Примерный ход уроков: Учащиеся демонстрируют решение домашних заданий. Самостоятельно работают над следующими заданиями из практикума, консультируются с учителем. Оценивается качество и количество решённых задач, уровень самостоятельности. В конце сдвоенного занятия можно фронтально обсудить наиболее интересные задачи.