Обработка строк с подпрограммами

Разделы: Информатика, Конкурс «Презентация к уроку»


Презентация к уроку

Загрузить презентацию (4 МБ)


Цели урока:

  • углубление, обобщение, систематизация знаний учащихся по теме “Строковый тип данных”;
  • отработка навыков и выработка умений обработки строк с использованием подпрограмм.

Задачи урока:

1) образовательные:

  • закрепление умений и навыков разработки программ с использованием строкового типа данных;
  • отработка навыков и выработка умений решения задач с использованием подпрограмм;

2) развивающие:

  • развитие логического мышления;
  • формирование умения анализировать, обобщать, сравнивать задачи;

3) воспитательные:

  • формирование научного мировоззрения;
  • сочетание индивидуальной работы с коллективной;
  • воспитание добросовестного отношения к учению, привитие интереса к предмету.

Тип урока: комбинированный.

Вид урока: одинарный, продолжительность – 45 минут.

Год обучения: первый.

Возраст учащихся: Х класс.

Программное обеспечение: программа Turbo Pascal.

Оборудование:

  • IBM-совместимые компьютеры, мультимедийный экран, мультимедийный проектор.
  • Наглядное пособие и дидактический материал: презентация по теме: “Обработка строк с использованием подпрограмм”, карточки с домашними задачами.

Оформление доски: на доске написаны тема урока, цели урока.

Виды работ: фронтальный устный опрос; самостоятельная работа в мини-группах по 2 человека; работа с тетрадями, работа на компьютере; решение экспериментальных задач.

Ожидаемые результаты: самостоятельное выполнение учащимися заданий по обработке строк с использованием подпрограмм.

План урока:

  1. Организационный момент – 1 мин.
  2. Актуализация знаний и умений учащихся – 5 мин.
  3. Фронтальный опрос – 1 мин.
  4. Мозговой штурм – 1 мин.
  5. Проверка домашнего задания на компьютерах – 3 мин.
  6. Создание проблемной ситуации – 2 мин.
  7. Отработка навыков и выработка умений решения задач обработки строк с использованием подпрограмм – 16 мин.
  8. Самостоятельная работа – 10 мин.
  9. Гимнастика для глаз – 1 мин.
  10. Подведение итогов урока – 3 мин.
  11. Рефлексия – 1 мин.
  12. Домашнее задание – 1 мин.

Ход урока

I. Организационный момент.

Учитель. Ребята! На сегодняшнем занятии мы постараемся систематизировать наши знания, полученные на предыдущих занятиях по теме “Строковый тип данных”, познакомимся с примерами обработки строк с использованием подпрограмм.

Начинается показ презентации “Обработка строк с использованием подпрограмм” (Презентация). На первом слайде тема урока.

А теперь вспомним самые важные моменты прошлых занятий, которые нам сегодня понадобятся на уроке.

II. Актуализация знаний и умений учащихся.

1. Фронтальный опрос.

Вопросы для повторения:

  1. Что называется строкой в языке программирования Pascal?
  2. Приведите примеры описания строкового типа данных.
  3. Как можно обратиться к какому либо символу строки?
  4. Как осуществить ввод нескольких переменных типа 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).

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