Методическая разработка по программированию Символьные величины

Методическая разработка



Символьные величины.

Обработка текстовой информации на компьютере.







Автор: О. В. Рыжих
учитель информатики
МБОУ г. Иркутска
СОШ №12
















Иркутск, 2015

Часто пользователю приходится не только делать вычисления, но и обрабатывать текстовую информацию; находить нужное слово (фамилию, какое-то наименование и т. д.), либо какую-то часть его; размещать или передвигать по экрану дисплея текст и т. п.
В данной работе будет рассмотрено решение задач обработки текстовой
информации. Такие задачи требуют применения иных, не арифметических операций и знание функций обработки текстов. Однако при этом процесс
алгоритмизации и программирования полностью сохраняется.
Основные цели занятий по этому разделу – научить школьников решать задачи обработки текстовой информации на компьютере, воспитать у них навыки свободного обращения с вычислительной машиной, развивать творческие способности и логическое мышление при составлении алгоритмов, программ.
Достижение этих целей организуется через демонстрацию образцов решения специально подобранных задач в сочетании с самостоятельной работой над задачами такого же класса.
При такой методике удается:
показать учащимся интересные, практически важные задачи, привлечение компьютера для решения которых является обоснованным;
подчеркнуть специфические программистские приемы при разборе конкретных программ, которые школьник может взять на вооружение и применить при решении других задач.

УРОК 1 (2 часа)

Тема урока: Символьные величины. Основные функции обработки символьных переменных.
Цели урока: дать характеристику символьных величин, рассмотреть функции обработки символьных переменных, апробировать результат их работы на компьютере.
1. Объяснение нового материала.
Программы на языке Бейсик обрабатывают не только числовую, но и текстовую информацию, т. е. строки символов. Для этого используются символьные константы, переменные и выражения. В памяти ЭВМ текстовые данные хранятся как последовательность кодов всех символов, составляющих текст.
Символьная константа-это строка символов, заключенная в кавычки. Значением константы является последовательность составляющих ее символов, не считая кавычек. Внутри кавычек допускается запись любых символов, за исключением символа кавычек. Два идущих подряд знака кавычек задают пустую символьную строку, не содержащую ни одного символа.
У символьной переменной есть имя, которое заканчивается знаком денежной единицы($) и значение в виде строки символов, которое может меняться по ходу выполнения программы.
Например: к$="школа"
Фактически имя символьной переменной в каждый момент времени указывает на некоторую область памяти, в которой находятся коды символов, составляющих текущее значение переменной. Максимальная возможная длина значений символьных констант и переменных зависит от реализации языка.
Символьный массив-это массив элементами, которого являются символьные строки. Поскольку массив можно рассматривать как переменную, снабженную одним или двумя индексами, то имя символьного массива и значения его элементов должны удовлетворять обычным требованиям к переменным этого типа.
Символьная функция-это функция, значениями которой являются строки символов. Имя символьной функции тоже заканчивается знаком($).
Символьным выражением называется символьная константа или переменная, ссылка на элемент символьного массива или значение символьной функции, а также результат любого их соединения при помощи знака плюс. Этот знак обозначает операцию КОНКАТЕНАЦИИ(сцепление строк).
Также для строк определена операция сравнения. Строки считаются равными, если их длины равны и коды всех символов попарно совпадают. Если одна из строк совпадает с началом другой, но короче ее, то она меньше. В остальных случаях все решает код первого несовпадающего символа - меньше та строка, у которой код меньше.
Значения символьной переменной могут задаваться при помощи операторов:
1.LET
2.INPUT
3.DATA, READ

ОСНОВНЫЕ ФУНКЦИИ ОБРАБОТКИ ЛИТЕРНЫХ ПЕРЕМЕННЫХ.

1. ASC-переводит первый символ строки в код.
Формат: Х=ASC(<арг>), где аргумент - это непустое символьное выражение. Результат функции - целое число из [0;255].
Пример: PRINT “Код буквы F равен”;ASC(“F”)
На экране будет текст: Код буквы F равен 70

2. CHR$-эта функция обратная функции ASC.
Функция CHR$ переводит целое число в символьную строку из одного символа. Формат: Х$=CHR$(<арг>), где аргумент- целое выражение, принимающее значения из отрезка [0;255].
Пример: PRINT “Буква с кодом 70 – это”;CHR$(70)
На экране будет текст: Буква с кодом 70 – это F
Если Х попадает в необходимый диапазон, и переменная Х$ состоит из одного символа, то всегда верно:
X=ASC(CHR$(X)) и X$=CHR$(ASC(X$)).

3. LEN-определяет длину символьной переменной.
Формат: Х=LEN(<арг>), где аргумент - какое-то символьное выражение.
Пример: T$=”информатика”
X=LEN(T$)
PRINT “Х=”;Х
На экране будет: Х=11

4. MID$-выбирает из строковой величины определенное количеств символов с заданной позиции.
Формат: X$=MID$(K$,M,N), где К$- само символьное выражение из которого мы выбираем. M-номер позиции, с которой осуществляется выборка. N-количество символов, которое нужно выбрать.
Третий аргумент может быть опущен, в этом случаи выбираются все символы до конца строки.
Пример: Т$=”информатика”
P$=MID$(T$,3,6)
PRINT P$
На экране будет напечатано слово формат
Функция MID$ может быть использована и в левой части команды присваивания для замены части строки началом другой строки.
Формат: MID$(T$,M,N)=Z$,где Т$ -символьная переменная, Z$ - символьная строка.
N первых символов строки Z$ будет перемещено на место N символов переменной T$, начиная с позиции М.
Пример: T$=”былина“
MID$(T$,2,2)=”узник“
PRINT T$
На экране будет напечатано слово бузина

5. LEFT$-осуществляет выделения первых левых символов.
Формат: X$=LEFT$(K$,N), где K$ - строка, из которой выделяем.
N-количество выделяемых символов.

6. RIGHT$-выделяет последние правые символы.
Формат: X$=RIGHT$(K$,N), где К$ - строка, из которой выделяем.
N – количество выделяемых символов.
Пример: T$=”символ”
X$=LEFT$(T$,3)
Y$=RIGHT$(T$,3)
PRINT X$,Y$
На экране будет напечатано: сим вол

7. INSTR-определяет номер позиции вхождения подстроки в строку.
Формат: X=INSTR([позиция,] <строка>,<подстрока>).
Позиция-это число из отрезка [1;255], которое означает позицию начала поиска. Этот аргумент может отсутствовать, в этом случае поиск ведется с первой позиции. Строка - символьное выражение, в котором ведется поиск. Подстрока-это символьное выражение, искомый сегмент. Если подстрока не найдена, то выдается позиция 0. Функция INSTR ищет только первое вхождение подстроки в строку.
Пример: T$=”информатика”
X=INSTR(1,T$,”a”)
PRINT “X=”;X
На экране будет: Х =7

8. STRING$-формирует строку из N одинаковых символов.
Формат: X$=STRING$(N,<арг>), где N-это целое число из отрезка [0;255], которое определяет длину создаваемой строки, <арг> - это число из отрезка [0;255], соответствующее коду, которым заполняется новая символьная строка или символьное выражение, первым символом которого заполняется новая символьная строка.
Пример: X$=STRING$(5,”F”) X$=STRING$(5,70)
PRINT X$ или PRINT X$
На экране будет: FFFFF

9. INKEY$. При работе с текстовой информацией часто необходимо знать какая сейчас была нажата клавиша только что.
Для этой цели служит функция INKEY$. Однако в отличие от оператора INPUT компьютер в данном случаи не останавливается и не ожидает вас, а продолжает выполнять программу, не высвечивая на экране символы, соответствующие нажимаемым клавишам. Другими словами функция INKEY$ считывает символ с буфера ввода клавиатуры.
Eсли не было введено никакого символа, то функция INKEY$ выдает пустую символьную строку. Если символ был введен, то он считывается из буфера и выдается через INKEY$.
Пример: Программа печати кода клавиш
A:PRINT “нажми клавишу”
C$=INKEY$
IF C$=”” THEN GOTO A
PRINT ASC(C$) : GOTO A
На экране будут печататься коды символов, соответствующие нажимаемым клавишам.

10.VAL-служит для преобразования символов-цифр в число.
Другими словами эта функция предлагает компьютеру воспринимать строковые значения как число.
Если в последовательности символов на первом месте стоит ни цифра, и ни точка, то результат действия на нее функции VAL будет нулевым.

11.STR$. Функция, обратная функции VAL, которая переводит число в последовательность символов. Использование этой функции позволяет "разрезать" и "склеивать" числа.
2. Домашнее задание
Выучить форматы и назначения функций.
УРОК 2 (2 часа)
Тема урока: Функции обработки символьных переменных. Решение задач с использованием символьных функций.
Цели урока: Закрепить знания учащихся по использованию и применению символьных функций, научить решать задачи с символьными величинами. Проверить, оценить и закрепить знания учащихся по использованию и применению символьных функций
Решение задачи с использованием изученных функций
Задача Подсчитать сколько раз среди символов заданной строки встречается буква ф.
Решение
INPUT “Введи строку”;T$
PRINT “Исходная строка”;T$
K=0
FOR I=1 to LEN(T$)
IF MID$(T$,I,1)=”ф” THEN K=K+1
NEXT I
PRINT “буква ф встретилась “;K;” раз”
END
Решение задач учащимися (составление программы, отладка на ПК, получение результатов).
Перечень задач:
1. Ввести предложение и подсчитать в нем количество слов, если известно, что слова отделяются друг от друга или пробелами или запятыми.

U°2. Выдать номер позиции заданной строки, в которой впервые встретилась буква «в». Если такой буквы в строке нет, то выдать об этом сообщение.

3. Выдать номер позиции заданной строки, в которой в пятый раз встречается буква «W». Если такой позиции нет, то выдать об этом сообщение.

4. В заданной строке подсчитать отдельно количество символов «а» и «б».

5. Из заданной строки получить новую, заменив все запятые на точки. Распечатать полученную строку.

6. В заданной строке поменять местами первую букву «а» и первую букву «б». Если хотя бы одной из них нет, напечатать сообщение, иначе распечатать полученную строку.

7. Из заданной строки выделить подстроку длиной 5 знаков (либо до конца строки, если осталось меньше), которая начинается с первой встретившейся в строке буквы «ф». Распечатать эту подстроку или сообщение о том, что ее нет.

8. В тексте, содержащем фамилию и инициалы, поставить инициалы перед фамилией. Инициалы отделяются от фамилии пробелом. Пример текста: Иванов К.Ф.

9. В заданном тексте удалить часть текста, заключенную в скобки (считаем, что в тексте одна пара скобок).

10. Проверить в заданном тексте равенство числа открывающих скобок числу закрывающих скобок.

Выполнение задания на компьютере по использованию символьных функций.
Задание находится на компьютере администратора в папке «Мои документы» в файле «Урок символьные величины». Скопировать указанный файл на рабочий стол своего компьютера и открыть данный документ. На поставленные вопросы дать ответы.






Вопрос
Ответ

1
Каков результат выполнения программы?
K$=”KOT” : X$=CHR$(ASC(K$))
PRINT X$


2
Как называется операция сцепления
строк? Привести пример.


3
Какая величина больше :
“море “ или “мор “ ? И почему?


4
Каков результат выполнения программы?
E$=”ЗМЕЕЛОВ”: R$=”ЗМЕЯ”
N=LEN(E$)-LEN(R$): PRINT N


5
Каков результат выполнения программы?
K$=”железнодорожник”
P$=MID$(K$,8,2)+MID$(K$,5,1)+MID$(K$,9,2)
PRINT P$


6
С помощью функции MID$ составьте из слова
ЖЕЛЕЗНОДОРОЖНИК слово КОЛЕНО.


7
Каков результат выполнения программы?
K$=”ГРАДУС” :X$=LEFT$(K$,4)
Y$=RIGHT$(K$,2) : PRINT X$,Y$


8
В чем разница выполнения программ? И каков результат их выполнения?
K$=”ЭЛЕКТРИФИКАЦИЯ” : E$=”И”
N=INSTR(1,K$,E$) или N=INSTR(8,K$,E$)
PRINT N


9
Каково назначение функции STRING$? Привести пример использования этой функции


10
Каков результат выполнения программы?
E$=”-.4567” : PRINT VAL(E$)*10
R$=STR$(VAL(E$)*10)+MID$(E$,5)
PRINT R$




Комментирование ответов учащимися.
5. Домашнее задание по карточкам дифференцированно.

УРОК 3 (3часа)
Тема урока: Алгоритм выделения слов в тексте.
Цели урока: Ознакомить учащихся с новым алгоритмом, новым подходом к решению подобных задач, научить учащихся применять данный алгоритм, как вспомогательный, при решении задач с символьными величинами.
Проверка домашнего задания и устранение неясностей.
Объяснение нового материала.
А Г О Р И Т М В Ы Д Е Л Е Н И Я С Л О В В Т Е К С Т Е.
При работе с символьными переменными одним из основных заданий является работа с отдельными словами. Для реализации такой работы необходим алгоритм выделения слов в тексте.
Например: Х$=”Земля вселенная моя”
А$(1)="Земля": А$(2)="вселенная": А$(3)="моя"
Если в заданном тексте определить позиции двух соседних пробелов, то символы, находящиеся между этими пробелами, будут представлять из себя слова.
Для выделения слов вводят две переменные. Пусть переменная К -будет позиция предшествующего пробела, а переменная К1-будет определять позицию текущего пробела.
С Л О В Е С Н Ы Й А Л Г О Р И Т М В Ы Д Е Л Е Н И Я
С Л О В В Т Е К С Т Е.
1.Задается позиция предшествующего пробела. В начале текста эта позиция задается равной 0. (К=0).
2.С помощью функции INSTR определяется позиция К1 следующего пробела, который называется Т Е К У Щ И М П Р О Б Е Л О М. Поиск этого пробела начинается с позиции К+1: К1=INSTR(k+1,x$," ")
3.Функция MID$ выделяет символы, которые составляют слово. А$=MID$(X$,K+1,K1-K-1).
Поскольку во фразе несколько слов, то выделения всех слов осуществляется в итерационном цикле. Поскольку итерационный цикл реализуется либо оператором условного перехода IF, либо оператором цикла WHILE WEND, то для их работы необходима проверка условия окончания итерационного цикла - критерий остановки. Когда К1 равняется 0, то это означает, что пробелы отсутствуют, что в свою очередь означает, что выделяется последнее слово и процесс выделения слов должен быть закончен. Если позиция К1не равна 0, то необходимо перейти и выделить следующее слово.
К1=0- К Р И Т Е Р И Й О С Т А Н О В К И
Поскольку в функции MID$ выделения очередного слова начинается с позиции К+1, то не изменив его значения, будем выделять вместо очередного слова все предыдущие слова в одно слово. Чтобы избежать этого, необходимо передвинуть позицию предшествующего пробела К в позицию текущего пробела простым присваиванием.
К=К1
Это также необходимо для задания позиции поиска очередного текущего пробела.
П Р О Г Р А М М А.
REM "выделения слов в тексте"
X$="Земля вселенная моя"
M=LEN(X$)
DIM A$(M)
K=0:I=1
А: K1=INSTR(K+1,X$," ")
IF K1=0 THEN A$(I)=MID$(X$,K+1,M-K) ELSE A$(I)=MID$(X$,K+1,K1-K-1)
I=I+1
K=K1
IF K1<>0 THEN GOTO A
PRINT “Сформированный массив слов”
FOR J=1 to I-1
PRINT A$(J)
NEXT J
END
Практикум на ПК (Отладка программы, получение результатов).
Решение задач с применением данного алгоритма.
Более сильным учащимся предлагается попытаться придумать свой алгоритм выделения слов в тексте или усовершенствовать предложенный, а остальным – использовать данный алгоритм, как вспомогательный.
Пример одной из программ, реализованных учащимися:
Постановка задачи:
Определить сколько раз встречается заданное слово в строке.
Решение:
INPUT “введи строку “;S$
INPUT “введи заданное слово“;B$
PRINT “исходная строка “;S$
PRINT “заданное слово“;B$
K=0 : N=LEN(S$) : L=0
DIM A$(N)
FOR I=1 TO N
K=K+1
IF MID$(S$,I,1)=” “ THEN L=L+1 : A$(L)=MID$(S$,I-K+1,K-1) : K=0
NEXT I
A$(L+1)=RIGHT$(S$,K)
FOR I=1 TO L+1
IF A$(I)=B$ THEN P=P+1
NEXT I
PRINT “слово “;B$;”встречается в строке “;P;” раз“
END
5. Домашнее задание дифференцированно.
З А Д А Ч И ДЛЯ САМОСТОЯТЕЛЬНОГО РЕШЕНИЯ:
1.Вводится строка. Определить на какую букву оканчивается третье слово.
2.Вводится строка. Подсчитать сколько слов начинается с последней буквы первого слова.
3.Вводится строка. Подсчитать сколько слов оканчивается на последнюю букву первого слова.
4.Вводится строка. Подсчитать сколько слов начинается с первой буквы третьего слова.
5.Вводится строка. Подсчитать сколько слов оканчивается на "ова".
6.Вводится строка. Найти в ней самое длинное слово.
7.Вводится строка. Определить количество слов, равных по длине первому слову.
8.Вводится строка. Подсчитать количество букв “д“ в последнем слове.
9.Вводится строка. Найти в ней все слова, начинающиеся с буквы “л”.
10.Вводится строка. Найти в ней первое слово, имеющее заданную длину.
11.Вводится строка. Проверить, все ли слова имеют равную длину.
12.Вводится строка. Определить, сколько раз в ней содержится заданное слово.
13.Вводится строка. Выбрать из слов строки палиндромы (“перевертыши”, как слова КАЗАК, ШАЛАШ и т. п.) и составить из них новую строку.
14.Дан символьный массив. Вывести те из его элементов, которые являются палиндромами.
15.Дан символьный массив. Составить строку из тех его элементов, которые начинаются с заданного символа и длина которых при этом не больше заданного числа.

УРОК 4 (3 часа)
Тема урока: Решение задач с символьными величинами. Практическая контрольная работа.
Цели урока: Закрепить знания учащихся по данной теме, устранить неясности при составлении алгоритмов, программ, отладки их на ПК, проверить и оценить знания учащихся, развивать творческие способности и логическое мышление при составлении алгоритмов, программ.
Проверка домашнего задания и устранение неясностей.
Практикум на компьютере по отладке программ, получение листинга программ, результатов.
Получение задания контрольной работы (по карточкам, дифференцированно).
Перечень задач, предлагаемых на контрольную работу:
1. Определить, сколько раз в тексте встречается буква «а». Если этих букв больше 3, то из исходного текста сформировать текст без пробелов.

2. Если во фразе количество букв «а» больше количества букв «е», то распечатать и расположить слова фразы в алфавитном порядке.

3.Подсчитать, сколько слов в тексте начинается и заканчивается на одну и ту же букву. Если такие слова есть в тексте, то подсчитать сколько букв «а» в тексте.

4. Подсчитать, сколько слов во фразе заканчивается на одинаковые буквы. Напечатать эти буквы и заканчивающиеся на них слова.

5. Подсчитать, сколько слов во фразе начинается на одну и ту же букву. Если количество этих слов четное, то сформировать фразу без пробелов.

6. Подсчитать, сколько слов во фразе начинается и заканчивается на одинаковые буквы. Если такие слова имеются, то определить позиции букв «а» в тексте.

7. Подсчитать, сколько слов в тексте оканчивается на «х». Если таких слов больше одного, то подсчитать количество букв «е» во всей фразе и определить номера их позиций.

8. Подсчитать, сколько гласных букв в каждом слове данного текста. Определить и напечатать слова, длина которых больше 8 символов.

9. В тексте «вычислительная техника и программирование очень интересный предмет» найти слово «интересный» и заменить его на слово «трудный».

10. Выяснить, сколько раз встречается каждая буква алфавита в строке.

11. Выбрать из слов строки палиндромы и составить из них новую строку.

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

13. Распечатать предложения текста в порядке возрастания их длин. Длиной будем называть количество символов в предложении.

Составление алгоритмов и программ.
Отладка программы на компьютере, получение листинга программ, результатов.









13PAGE 15


13PAGE 141315




Заголовок 1 Заголовок 215