Цели урока:
- углубление, обобщение, систематизация знаний учащихся по теме “Строковый тип данных”;
- отработка навыков и выработка умений обработки строк с использованием подпрограмм.
Задачи урока:
1) образовательные:
- закрепление умений и навыков разработки программ с использованием строкового типа данных;
- отработка навыков и выработка умений решения задач с использованием подпрограмм;
2) развивающие:
- развитие логического мышления;
- формирование умения анализировать, обобщать, сравнивать задачи;
3) воспитательные:
- формирование научного мировоззрения;
- сочетание индивидуальной работы с коллективной;
- воспитание добросовестного отношения к учению, привитие интереса к предмету.
Тип урока: комбинированный.
Вид урока: одинарный, продолжительность – 45 минут.
Год обучения: первый.
Возраст учащихся: Х класс.
Программное обеспечение: программа Turbo Pascal.
Оборудование:
- IBM-совместимые компьютеры, мультимедийный экран, мультимедийный проектор.
- Наглядное пособие и дидактический материал: презентация по теме: “Обработка строк с использованием подпрограмм”, карточки с домашними задачами.
Оформление доски: на доске написаны тема урока, цели урока.
Виды работ: фронтальный устный опрос; самостоятельная работа в мини-группах по 2 человека; работа с тетрадями, работа на компьютере; решение экспериментальных задач.
Ожидаемые результаты: самостоятельное выполнение учащимися заданий по обработке строк с использованием подпрограмм.
План урока:
- Организационный момент – 1 мин.
- Актуализация знаний и умений учащихся – 5 мин.
- Фронтальный опрос – 1 мин.
- Мозговой штурм – 1 мин.
- Проверка домашнего задания на компьютерах – 3 мин.
- Создание проблемной ситуации – 2 мин.
- Отработка навыков и выработка умений решения задач обработки строк с использованием подпрограмм – 16 мин.
- Самостоятельная работа – 10 мин.
- Гимнастика для глаз – 1 мин.
- Подведение итогов урока – 3 мин.
- Рефлексия – 1 мин.
- Домашнее задание – 1 мин.
Ход урока
I. Организационный момент.
Учитель. Ребята! На сегодняшнем занятии мы постараемся систематизировать наши знания, полученные на предыдущих занятиях по теме “Строковый тип данных”, познакомимся с примерами обработки строк с использованием подпрограмм.
Начинается показ презентации “Обработка строк с использованием подпрограмм” (Презентация). На первом слайде тема урока.
А теперь вспомним самые важные моменты прошлых занятий, которые нам сегодня понадобятся на уроке.
II. Актуализация знаний и умений учащихся.
1. Фронтальный опрос.
Вопросы для повторения:
- Что называется строкой в языке программирования Pascal?
- Приведите примеры описания строкового типа данных.
- Как можно обратиться к какому либо символу строки?
- Как осуществить ввод нескольких переменных типа String в программу?
2. Мозговой штурм (слайд 3).
3. Проверка домашнего задания на компьютерах .
Ученики на компьютерах набирают программу решения следующей домашней задачи:
Дана строка символов. Удалить из нее символы, расположенные на четных местах.
По окончании работы учащихся на компьютерах учитель анализирует разработанные программы, на экран выводится правильный вариант решения задачи, представленный в виде блок-схемы и программы (слайды 4, 5).
Программа.
Program Example;
Var S: String;
i: Integer;
Begin
Write (‘S=‘);
Readln (S);
i := 2;
While i <= Length (s) Do
Begin
Delete (S, i, 1);
i := i +1;
End;
Writeln (‘S=‘, S);
Readln
End.
III. Создание проблемной ситуации.
Учитель. Ребята! А как бы вы разработали программу решения этой задачи, если бы в ней речь шла не об одной строке символов, а о двух-трех строках?
Ученик. Разработал бы аналогичную программу. Только она будет намного длиннее, а точнее в два-три раза, в зависимости от количества заданных строк.
Учитель. Подумайте, ребята, нельзя ли “сократить” программу. Написать всё же не очень длинную программу?
Идет бурное обсуждение проблемы. Предлагаются саамы разные варианты.
Учитель. Ребята! Я предлагаю вам применить технологию нисходящего программирования для решения данной проблемы. Это очень удобно и выгодно и с точки зрения экономии компьютерной памяти. Можно оформить в виде отдельной подпрограммы-процедуры процесс удаления символа в каждой строке. А потом вызвать эту подпрограмму по имени столько раз, сколько исходных строк имеется. Таким образом, программа получится не такой “громоздкой”, а будет “изящной и грациозной”. Но, чтобы задача была как бы “новой”, изменим немного и условие задачи.
IV. Отработка навыков и выработка умений решения задач обработки строк с использованием подпрограмм.
Задача 1.
Удалить из первой строки все символы “k”, из второй – символы “a”.
Решение.
Представим блок-схему алгоритма решения данной задачи и разработаем программу (слайды 6, 7).
Введем обозначения: S1, S2 – заданные строки; i – номер символа; S[i] – i-й символ строки S; c – переменная, значением которой является удаляемая буква.
Входные данные: S1, S2.
Выходные данные: S1, S2.
В подпрограмме из строки символов S удаляются все буквы, совпадающие со значением переменной с. Для этого просматриваются все символы строки S – с первого до последнего (его номер равен значению длины строки). Если i-й символ строки S[i] совпадает с разыскиваемой буквой (с), то этот символ удаляется, то есть удаляется из строки S, начиная с i-го символа, один символ – Delete (S, i, 1). Длина строки уменьшается на единицу, при этом символ, находившийся на (i + 1)-й позиции, окажется на i-й и должен проверяться следующим. Если же i-й символ не совпадает с разыскиваемой буквой (с), то проверяется следующий по порядку символ строки, для этого i увеличивается на единицу (i := i +1). Так как длина строки меняется в процессе обработки, для организации цикла следует использовать оператору While или Repeat.
В подпрограмме-процедуре два формальных параметра S, c: S, c – исходные данные для этой процедуры; S является одновременно и ее результатом. Поэтому с должен быть описан как параметр-значение, а S – как параметр-переменная. При вызове процедуры формальные параметры заменяются на соответствующие фактические.
Программа:
Program Example_2;
Var S1, S2: String;
Procedure Del (Var S: String; c: Char);
Var i: Integer; {i – локальный параметр}
Begin
i := 1;
While i <= Length (S) Do
If S[i] = c Then Delete (S, i, 1)
Else i := i + 1;
End;
Begin
Write (‘Введите строку S1: ’);
Readln (S1);
Del (S1, ‘k’); {S1, ‘k’ – фактические параметры}
Writeln (‘S1=‘, S1);
Write (‘Введите строку S2: ’);
Readln (S2);
Del (S2, ‘a’); {S2, ‘a’ – фактические параметры}
Writeln (‘S2= ‘, S2);
Readln
End.
Задача 2.
Даны две строки. Встречаются ли в первой строке буква “a” и буква “o”, а во второй строке – буква “d” и буква “h”?
Решение.
Представим блок-схему алгоритма решения данной задачи и разработаем программу (слайды 8, 9).
Введем обозначения: S1, S2 – заданные строки; i – номер символа; S[i] – i-й символ строки S; q1, q2 – переменные, значениями которых являются указанные в каждой строке буквы; t1, t2 – логические переменные, указывающие наличие или отсутствие соответствующих букв в строке; k1, k2 – счетчик букв (q1) и (q2) соответственно.
Входные данные: S1, S2.
Выходные данные: t1, t2.
В подпрограмме-функции определяется значение переменной t. Если t = true, то в строке встречаются указанные буквы, если же t =falsе, то в строке не встречаются указанные символы.
Программа:
Program Example_3;
Var S1, S2: String;
t1, t2: Boolean;
Function Opr (S: String; q1, q2: Char): Boolean;
Var i, k1, k2: Integer;
t: Boolean;
Begin
i:=1;
t:=false;
k1:=0; k2:=0;
While i<= Length (s) Do
Begin
If s[i]=q1 Then k1:=k1+1
Else
If s[i]=q2 Then k2:=k2+1
End;
If (k1<>0)and(k2<>0) Then
t:= true;
Opr:=t
End;
Begin
Write ('S1= ');
Readln (S1);
Write ('S2= ');
Readln (S2);
t1:=Opr (S1, 'a','o');
t2:=Opr (S2, 'd', 'h');
Writeln ('t1= ', t1, 't2= ', t2);
Readln
End.
А теперь решим следующую задачу с применением подпрограммы.
Задача.3.
Заменить все вхождения подстроки W в строке S на подстроку V.
Входные данные: W, S, V.
Выходные данные: S
Решение:
Представим блок-схему алгоритма решения данной задачи и разработаем программу (слайды 10, 11).
Пока подстрока W встречается, необходимо находить номер первого символа очередного вхождения подстроки W, удалять подстроку W в строке S и вставлять в нее подстроку V. Для этого воспользуемся стандартной функцией Pos, стандартными процедурами Delete, Insert соответственно. Оформим все эти действия в виде отдельной подпрограммы-процедуры Stroki.
Программа:
Program Example_3;
Var W, S, V: String;
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;
Begin
Writeln (‘Введите строки’);
Readln (W);
Readln (S);
Readln (V);
Ins (W, V, S); {Вызов процедуры}
Writeln (‘S=‘, S);
Readln
End.
V. Самостоятельная работа.
Далее объявляется самостоятельная работа (слайд 12). Ребята получают задания по вариантам. Работа выполняется в группах по двое на компьютерах.
Вариант 1. Даны две строки символов. Проверить, содержится ли в первой строке символ-цифра, во второй строке – строчная латинская буква.
Вариант 2. Даны две строки. В первой строке заменить сочетание “no’ на сочетание “da”, во второй строке – сочетание “as” на сочетание “ne”.
Вариант 3. Даны две строки. Какая буква встречается раньше: “a” или “o” в первой строке, и “w” или “u” во второй?
Вариант 4. Даны две строки символов. В первой строке перед сочетанием “fo” вставить символ “r”, во второй строке – перед сочетанием “go” вставить символ “t”.
VI. Гимнастика для глаз.
Проводится физкультминутка для снятия зрительной усталости. Упражнения выполняются сидя.
Голову держать прямо. Поморгать, не напрягая глазные мышцы, 1- - 15 раз.
Не поворачивая головы (голова прямо) с закрытыми глазами посмотреть направо на счет 1-4, затем влево на счет 1-4 и прямо на счет 1-6. Поднять глаза вверх на сет 1-4, опустить вниз на сет 1-4 и перевести взгляд прямо на счет 1-6. Повторить 4 – 5 раз.
Посмотреть на указательный палец, удаленный от глаз на расстояние 25 – 30 см, на счет 1-4, потом перевести взор вдаль на счет 1-6. Повторить 4 – 5 раз.
В среднем темпе проделать 3-4 круговых движения в правую сторону, столько же в левую сторону и., расслабив глазные мышцы, посмотреть вдаль на счет 1-6. Повторить 1 – 2 раза.
VII. Подведение итогов урока.
Учитель. Ребята! Сегодня мы с вами рассмотрели целый ряд самых различных задач по обработке строк. Чему вы научились? Что нового узнали на уроке?
Ответы учащихся:
Сегодня мы вспоминали технологию ниспадающего программирования.
Мы научились составлять программы обработки строк с использованием процедур и функций.
Учитель. Итак, ребята, давайте вместе сделаем выводы по нашей сегодняшней теме.
VIII. Рефлексия.
Учащиеся делятся впечатлениями от урока, рассказывают, что им понравилось, какие испытали трудности, что узнали нового, интересного.
Выводы:
Использование подпрограмм позволяет, сосредоточив в них подробное описание некоторых операций, в остальной программе только указывать имена подпрограмм, чтобы выполнить эти операции.
Использование подпрограмм не только улучшает структуру и внешний вид программы, но и уменьшает вероятность появления ошибок и облегчает отладку программы.
Использование подпрограмм позволяет получать более изящный и компактный текст программы.
Учитель объявляет оценки учащимся за работу на уроке.
IX. Домашнее задание (слайд 13).
Задача. Подсчитать сумму цифр, встречающихся в двух строках, состоящих из символов-букв и символов-цифр.