Добавить материал и получить бесплатное свидетельство о публикации в СМИ
Эл. №ФС77-60625 от 20.01.2015
Свидетельство о публикации

Автоматическая выдача свидетельства о публикации в официальном СМИ сразу после добавления материала на сайт - Бесплатно

Добавить свой материал

За каждый опубликованный материал Вы получите бесплатное свидетельство о публикации от проекта «Инфоурок»

(Свидетельство о регистрации СМИ: Эл №ФС77-60625 от 20.01.2015)

Инфоурок / Информатика / Конспекты / Урок - игра по информатике на тему: «Занимательный урок на компьютере. Информатика и Русский язык. Палиндромы»
ВНИМАНИЮ ВСЕХ УЧИТЕЛЕЙ: согласно Федеральному закону № 313-ФЗ все педагоги должны пройти обучение навыкам оказания первой помощи.

Дистанционный курс "Оказание первой помощи детям и взрослым" от проекта "Инфоурок" даёт Вам возможность привести свои знания в соответствие с требованиями закона и получить удостоверение о повышении квалификации установленного образца (180 часов). Начало обучения новой группы: 28 июня.

Подать заявку на курс
  • Информатика

Урок - игра по информатике на тему: «Занимательный урок на компьютере. Информатика и Русский язык. Палиндромы»

библиотека
материалов



Учитель: Радаева Елена Николаевна

МБОУ СШ №8 г. Нижневартовск

Класс: 11

Тема урока: «Занимательный урок на компьютере. Палиндромы».

Цели урока:

Образовательные

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

Развивающие

  • развивать память, внимание, алгоритмическое мышление.

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

Воспитательные

  • воспитывать аккуратность, формировать познавательный  интерес к  информатике и русскому языку;

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

Тип урока:  игровой.

Форма урока: повторение пройденного материала.

Методы обучения: наглядный, словесный, тестирование.

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





План проведения урока:

  1. Организационный момент –2 мин.

  2. Подготовительный этап – 10 мин.

  3. Решение задачи, тестирование – 26 мин.

  4. Подведение итогов уроков – 2 мин. 

Ход урока: Стремление читать слова задом наперёд присуще даже самым отвратительным личностям, к коим мы, без тени сомнения, можем причислить Полиграфа Полиграфыча Шарикова из романа Михаила Булгакова «Собачье сердце». Вспомните, как он начал своё восхождение к высотам низменных мыслей с причудливого слова Абырвалг, которое поначалу поставило в тупик доктора Борменталя и профессора Преображенского. Впрочем, они быстро догадались, что в оригинальном написании это была лишь вывеска магазина Главрыба, прочитанное Шариковым с конца.

Чему нас учит классика на данном примере? — Не всякое слово следует читать «по-арабски», дабы не смущать учёные умы!

Впрочем, истории известен и другой, весьма поучительный пример ретроградного чтения, опровергающий предыдущее утверждение. В порядком уже давние времена на Амуре село на мель судно под названием Сунь Ятп-сен (китайский политик), его пытались стянуть за корму, но безуспешно. Это мероприятие продолжалось очень долго — до тех пор, пока один из матросов не повторил лингвистический подвиг Шарикова и не прочитал название судна с конца. Получилось Не стянусь! (только не придирайтесь к мелочам). Тогда попробовали зацепить трос за нос судна — и оно легко снялось с мели.

Кто мешает тебе выдумать порох непромокаемый.

Козьма Прутков

Второй пример лучше первого потому, что в результате прочтения названия судна наоборот получилась вполне осмысленная фраза, обернувшаяся практической пользой. Конечно, это всего лишь случайность, но кто запретит нам придумывать такие «двусмысленности»?

Однако больше известны другие фразы — их можно без ущерба для смысла читать и слева направо, и справа налево. Их называют палиндромами. Пожалуй, самый известный палиндром а роза упала на лапу Азора придумал Афанасий Фет, но мы знаем этот палиндром только потому, что именно эту «волшебную» фразу диктовала Мальвина своему дубовому ученику Буратино. Легко проверить, что она читается точно так же и в обратную сторону. Потому и волшебная!

В литературе вы найдёте множество примеров фраз-палиндромов (или — более патриотично — перевёртышей), порой очень забавных и даже ненормативных. Но придумывание таких афоризмов — настоящее искусство, которое совершенно не поддаётся алгоритмизации, поэтому мы поставим перед собой чисто техническую задачу — отыскать слова, которые не изменяются при чтении наоборот. Их тоже называют палиндромами, и вы наверняка знаете немало таких слов. Например, РОТОР, ШАЛАШ, КАБАК. Чтобы найти все такие слова, достаточно внимательно просмотреть словарь русского языка, но мы делегируем это занятие компьютеру.

Палиндромная программа:

На этом уроке мы напишем программу Palindrome для поиска слов-палиндромов, но сначала давайте придумаем алгоритм программы.

Объявим переменные и присвоим им значения:


var string 2:= '';

var string l:= 'РОТОР';




Велико искушение присвоить переменной string2 значение перевёрнутой строки stringl. Например, так:

var len := stringl.Length;

for var i:= 0 to len-1 do begin

var chr:= stringl.Substring(len-i-1,1); string2 += chr; end;



Действительно, если слово не изменяется при чтении задом наперёд, то stringl = string2. Сравниваем строки и при их равенстве делаем вывод, что слово-палиндром найдено:

if stringl <> string2 then writeln('He палиндром') else


writeln('Палиндром');

Можно поступить проще и ограничиться одной строковой переменной. Для этого достаточно заметить, что в слове-палиндроме одинаковые буквы расположены симметрично относительно середины слова, то есть нужно сравнить первую половину букв со второй (если в слове нечётное количество букв, то букву в середине слова ни с какой другой сравнивать не надо).

var len:= stringl.Length; var flg:= true;

for var j:= 1 to len div 2 do begin

var chrl:= stringl[len-j+1]; var chr2:= stringl[j]; if (chrl <> chr2) then begin

flg:=false;

break;

end;

end;

//нашли палиндром:


if (fig) then

С одним словом всё понятно, но нам нужно просмотреть все слова русского языка. Обычно палиндромы ищут среди существительных, поэтому мы также можем ими ограничиться. Мы уже пользовались словарем С. И. Ожегова и Н. Ю. Шведовой, в котором были бережно сохранены только существительные. Вы можете загрузить файл OSH-W97.sb ещё раз и убедиться, что в нём ровно 27 407 слов.

Нам нужно знать их число, чтобы задать размер массива. В этом случае нужно ввести константу MAX_WORDS с наибольшим предполагаемым числом слов.

Объявляем константы и переменные:



//ПРОГРАММА ДЛЯ ПОИСКА ПАЛИНДРОМОВ

uses CRT; const

MAX_W0RDS = 30000; fileNameIn=' 0SH-W97. txt'; fileNameOut=' palindrome. txt1 ;

var

//массив-список слов:


spisok: array [1..MAX WORDS] of string; //число слов в списке:

nWords: integer; f: textfile;

И считываем данные в массив spisok:

//ОСНОВНАЯ ПРОГРАММА

begin

SetWindowTitle('ПРОГРАММА ДЛЯ ПОИСКА ПАЛИНДРОМОВ’);

TextColor(LightRed); writeln('ИЩЕМ ПАЛИНДРОМЫ'); writeln;

TextColor(Yellow); readFile; -

Весь процесс загрузки файла вынесен в отдельную процедуру:

//Считываем словарь в массив procedure readFile(); begin

nWords:=0; var s: string; assign (f, fileNameln); reset(f);

while not eof(f) do begin

readln(f, s);

//writeln(s); inc(nWords); spisok[nWords]:= s; end; close(f); end;

Раньше мы только записывали данные в файл, а вот чтобы считать их из файла, необходимы процедуры

reset(f) иreadln(f, s).


Первая открывает файл для чтения. Вторая считывает строку в переменную s

В данном случае мы точно знаем, что в словаре 27 407 слов, поэтому нам достаточно цикла For, чтобы загрузить все слова из файла. Однако не всегда известно, сколько строк в файле, поэтому в подпрограмму введена дополнительная проверка.

hile not eof(f) do

Если условие not eof (f) не выполняется, то конец файла ещё не достигнут, в противном случае — файл яякптппглпя. Дальше действие подпрограммы должно быть вам понятно и без дополнительных объяснений. Процесс загрузки файла мы будем контролировать в консольном окне, печатая каждое новое слово на экране. Конечно, словарь загрузится и без нашего наблюдения, но при отладке программы совсем неплохо «присмотреть» за её работой.

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

w//writeln(s);

Зрелище всё ж любопытное, так что посмотрите обязательно!

Итак, в процедуре readFile мы загрузили все слова в строковый массив spisok и теперь можем целиком отдаться поиску палиндромов. Для этого достаточно проверить каждое слово в списке: если оно симметрично, то это палиндром, иначе — обычное слово. Из этого следует, что можно было бы и не загружать слова в массив, а проверять слова на лету. Но обычно слова используются в программе по нескольку раз, поэтому наш способ более универсальный!

Сам поиск палиндромов основан на уже рассмотренном нами алгоритме. Мы последовательно загружаем слова из массива spisok в переменную s (для наглядности программы и некоторого ускорения работы программы; можно везде пользоваться переменной spisokfi]) и проверяем его на «палиндромность». Найденные слова-палиндромы выводим в консольное окно и записываем в файл:



//ИЩЕМ ПАЛИНДРОМЫ

procedure findPalindrome ();

begin

assign (f, fileNameOut);

rewrite (f);

var s: string;

//ищем палиндромы в списке слов:

for var i:=l to nWords do

begin

s:= spisok[i];

//writeln(s);

var len:= s.Length;

var flg:= true;

for var j:= 1 to len div 2 do

begin

var chrl:= s[len-j+l];

var chr2:= s[j]; if (chrl <> chr2) then

begin

flg:=false;

break;

end;

end;

//нашли палиндром: if (fig) then begin

writeln (s);

writeln(f,s);

end;

end; //For i

close(f);

end;

Обратите внимание на переменные chrl и chr2, в которые записываются символы очередного слова, симметричные относительно его середины. Без них также можно обойтись, но, согласитесь, так программа читается куда легче!


Нам осталось вызвать процедуру findPalindrome из основной программы:

findPalindrome;

writeln ();

writeln (OK);

writeln ();

end.

Исходный код программы:

//Программа для поиска Палиндромов

Uses CRT;

Const

MAX_WORDS = 30000;

//fileNameIn=’OSN-W97frc.txt’;

fileNameIn=’OSN-W97.txt’;

fileNameOut=’palindrome.txt’;

var

//массив-список слов:

Spisok: array [1..MAX_WORDS] of string;

// число слов в списке:

nWords: integer;

F: textfile;

//Считываем словарь в массив

PROCEDURE readFile();

// procedure findPalindrom();

//begin

//end;

Begin

nWords:=0;

var s: string;

assign(f, failnameIn);

reset (f);

while not eof (f) do

begin

readln (f, s);

//writeln (s);

ink (nWords);

spisok [nWords]:= s;

end;

close (f);

end;

//ИЩЕМ ПАЛИНДРОМЫ

Procedure findPalindrom ();

begin

assign (f, fileNameOut);

rewrite (f);

var s:string;

//ищем палиндромы в списке слов:

For var i:=1 to nWords do

Begin

S:=spisok [i];

//writeln (s);

var len:= s.Length;

var flg:= true;

for var j:=1 to len div 2 do

begin

var chr1:= s[len-j+1];

var chr2:= s[j];

if (chr1 <> chr2) then

begin

flg:=false;

break;

end;

end;

//нашли палиндром:

If (flg) then

begin

writeln (s);

writeln (s,f);

end;

end; // For i

close (f);

end;





// ОСНОВНАЯ ПРОГРАММА

begin

SetWindowTitle (‘Программа для поиска палиндромов’);

TextColor(LightRead);

Writeln («Ищем палиндромы»);

Writeln;

TextColor(Yellow);

readFile;

findPalindrom;

writeln();

writeln(‘OK’);

writeln();

end.


























Подайте заявку сейчас на любой интересующий Вас курс переподготовки, чтобы получить диплом со скидкой 50% уже осенью 2017 года.


Выберите специальность, которую Вы хотите получить:

Обучение проходит дистанционно на сайте проекта "Инфоурок".
По итогам обучения слушателям выдаются печатные дипломы установленного образца.

ПЕРЕЙТИ В КАТАЛОГ КУРСОВ

Краткое описание документа:

Тип урока:  игровой.

 

Форма урока: повторение пройденного материала.

Оборудование:  среда программирования PASCALABC.NET.

Цели урока:

Образовательные

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

Развивающие

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

Воспитательные

 

  • воспитывать аккуратность, формировать познавательный  интерес к  информатике и русскому языку;
  • воспитывать умение внимательно выслушивать мнение других, воспитание культуры общения.
Автор
Дата добавления 11.03.2015
Раздел Информатика
Подраздел Конспекты
Просмотров355
Номер материала 436823
Получить свидетельство о публикации
Похожие материалы

Включите уведомления прямо сейчас и мы сразу сообщим Вам о важных новостях. Не волнуйтесь, мы будем отправлять только самое главное.
Специальное предложение
Вверх