- Учителю
- Функции символьных величин
Функции символьных величин
План-конспект урока информатики в 11 классе
Тема урока: «Функции символьных величин».
Цель урока: 1.Познакомить учащихся с функциями обработки строк, научить использовать эти функции при решении задач.
2.Развивать умения выделять главное в изученном материале, сравнивать, обобщать, логически излагать свои мысли.
3. Привить интерес к предмету информатики через прикладные программы.
Тип урока: комбинированный
План урока.
1. Актуализация знаний.
2. Объяснение нового материала.
3. Решение задач.
4. Домашнее задание.
Проверка домашнего задания
ученикам предлагаются следующие вопросы:
1) Какие величины называются символьными?
2) Как обозначаются символьные переменные?
) Как записываются символьные константы ?
4) Какая операция определена для символьных величин?
5) Какие операторы используют для ввода и вывода символьных величин?
6) Найдите ошибки в записях символьных величин (если они есть):
А) A$= «информатика»
Б) CK2= «вычислительная техника»
В) D$ = компьютер
Г) 64N$ = «algorithm»
7) Если в результате сложения символьных величин получится строка, большая 255 символов, лишние символы будут?
Решение заданной на дом задачи в тетрадях проверяется в ходе урока.
1. Актуализация знаний
Многие функции, которые встречаются в языке Бейсик, являются составной
Частью языка и называются стандартными функциями. Назовите некоторые из них (ABS(X), COS(X), SIN(X), SQR(X) и т. д.) Эти функции являются числовыми и обрабатывают числовые значения.
Для работы с введёнными нами новым типом - символьные величины - тоже есть свои функции. Они называются строковыми (символьными) функциями. Каждая такая функция имеет уникальное имя, по которому происходит обращение к ней. В зависимости от типа результата строковые функции делятся на функции обработки строк и функции преобразования типов данных. В функциях обработки строк и аргумент, и результат являются троками. Аргумент и результат функции преобразования типов данных, в отличие от аргумента и результата функции обработки строк, представляют собой данные разных типов.
Примечание На данном уроке основное внимание уделяется знакомству с функциями обработки строк ( хотя рассмотрены и функции преобразования типов данных) . В зависимости от уровня подготовки класса может быть рассмотрено различное число таких функций
.
2. Объяснение нового материала
При обработке текста часто необходимо знать его длину, т. е количество составляющих его символов.
Задание. Подсчитайте длину символьной величины A$ =" Информатика изучает технологию сбора, хранения и переработки информации."
Обратите внимание! Считаются не только буквы, но и пробелы, знаки
препинания, кроме кавычек.
Трудоёмкую работу по определению длины текста в Бейсике выполняет функция LEN(X$) ( от анг. LENgth - длина), которая находит длину символьной величины X$. Аргументом функции LEN должна быть символьная величина. Результатом является целое число, заключённое между 0 и 255.
LEN ( "SOS") = 3
LEN (" ***** " ) = 5
LEN (" ") = 0
В результате выполнения фрагмента программы
P$ = " эта фраза в настоящем времени "
PRINT " длина = "; LEN(P$)
На экран будет выведено сообщение о длине цепочки P$, равной 29.
Вопрос. Может ли быть результатом функции LEN число 325 ? .( Нет, так как символьные величины - это строки длиной до 255 символов)
Одна из основных операций, необходимая для анализа текста, - выделение какой-либо его части. Выполнить эту операцию позволяет функция MID$ ( от англ. MIDdle - середина). Её результатом является символьные строки, поэтому имя этой функции всегда сопровождается знаком $ . Функция MID$(X$,N,M) вырезает подстроку длиной в M символов из строки X$, начиная с символа с номером N. Эта функция может находится, как справа , так и слева от знака равенства и в зависимости от своего положения выполнять различные действия:
1. Функция MID$ справа от знака равенства.
Формат:
MID$ ( A$, N , [ M ] ) = B$
При выполнении этой команды последовательные символы строки A$ начиная с позиции N замещаются на первые M символов строки B$. Остальные символы в A$ остаются без изменения . [M] - необязательный параметр.
Рассмотрим фрагмент программы:
X$ = " 123456789"
INPUT Y$, N, M
MID$ ( X$, N, M ) = Y$
PRINT X$
В результате его выполнения при вводе LL, 5,3 на экран выводится 1234LL7890. Если ввести КРОКОДИЛ, 7,4 то на экран выводится строка 123456КРОК.
Примечание. Такое расположение функции MID$ применяется достаточно редко.
Функция MID$ слева от знака равенства.
Формат:
B$ = MID ( A$, N, [ M ] )
При выполнение этой команды, переменной B$ присваивается значение, представляющее собой M последовательных символов величины A$? Первый из которых ,занимает позицию N
MID$( "мишка", 2 , 3 ) = " ишк "
Если M не указано или количество символов в строке справа от символов N меньше, чем M, то выделяется строка с номером N до конца текста:
MID ( " паровоз ", 5 ) = " воз"
Если значение M равно 0 или значение N превышает длину строки, то результатом будет пустая строка.
А) MID$ ( " ", 2, 3 ) = " '
Б) MID$ ( " ЭВМ", 5, 3 ) = " "
В) INPUT X$, M
Y$ = MID$( X$, M )
PRINT Y$
В результате выполнения последнего фрагмента при вводе 1234567890, 5 на экран выводится 567890 ( т.е переменная Y$ принимает значение, равное 567890).
Кроме функций LEN и MID в разных версиях Бейсика имеются несколько десятков других функций, две основные из которых STRING$( N,M) и INSTR( N, X$, Y$ ).
Функция STRING( N, M ) создаёт строку из N одинаковых символов, равных первому символу строки X$ .
STRING $( 20, " * " )= "********************"
STRING $( 5, " ПРИВЕТ" ) = "ППППП"
STRING $( 4,61 ) = " ----"
STRING $(0, "B" ) = " "
STRING $( N, " " ) более просто записывается как SPACE$(N) ( англ. SPACE - пробел ) и изображает N пробелов. Данная функция может быть полезна при построении диаграмм в текстовом режиме.
Функция INSTR ( [N ], X$, Y$ ) ( от англ. Inspect STRing - просмотреть строку ) производит поиск первого вхождения подстроки Y$ в строку X$ начиная с N -го символа строки X$ . Если не задано, поиск выполняется с первого символа. Значением функции является целое число - номер позиции начала вхождения ( 0 - если строка не найдена, N - если Y$ пустая ).
INSTR ( 3, " Иван Иванович ", " Иван ") =8
INSTR ( " Иванов Иван Иванович ", " Иван " ) =1
4 Решение задач
Задача 1. Замените в предложении восклицательный знак на вопросительный.
Решение.
Примечание. Задача разбирается совместно у доски, далее ученики самостоятельно осуществляют просмотр программы на компьютере.
Используемые величины:
A$ -вводимый текст;
N - длина вводимого текста;
B$ - вырезаемый из текста символ;
I - номер вырезаемого символа;
C$ - текст, в котором «!» заменён «?».
Из вводимого текста A$ вырезается по одному символу B$ и проверяется условие: если B$ = "!", то C$ =C$ + "?" , иначе C$ = C$ + B$.
INPUT A$
N = LEN ( A$ )
C$ = ""
FOR I = 1 TO N
B$ = MID ( A$, I, 1 )
IF B$ = " ! " THEN C$ = C$ + "?" ELSE C$ = C$ + B$
NEXT I
PRINT C$
END
Вопрос. Обязательно ли использовать при решении величину N? Почему ?
Задача 2 . Дан текст. Определить содержит ли он символы «*».
Решение.
Примечание. Эту задачу ученики решают самостоятельно после просмотра задачи №1 в TurboBASIC и, используя алгоритм задачи №1 решают и отлаживают задачу №2.
Используемые величины те же, что и в задаче 1.
Из текста A$ вырезается по одному символу B$ и проверяется условие B$ = "*" . Если оно выполняется, то просмотр заканчивается и выводится «ДА», иначе просмотр продолжается; если достигнут конец текста и искомый символ не найден, выводится «НЕТ».
INPUT A$
N = LEN ( A$ )
FOR I = 1 TO N
B$ = MID$ ( A$ , I , 1 )
IF B$ = " * " THEN PRINT "ДА" ELSE PRINT "НЕТ"
NEXT I
END
Вопрос. Что изменится в решении, если находить нужно не «*» , а «**» ? «+++» ?
Для самостоятельного решения предлагаются следующие задачи:
1. Написать программу, выдающую номер позиции заданной строки, в которой в пятый раз встречается буква «w», и соответствующее сообщение, если эта буква встречается в строке менее 5 раз.
PRINT "Определение номера позиции, в которой встречается пятая буква w"
INPUT "Введите строку :";S$
K=0
J=LEN(S$)
FOR I=1 TO J
IF MID$(S$, I, 1 )="w' THEN K=K+1
IF K=5 THEN 1
NEXT I
PRINT "В данной строке буква w встречается меньше пяти раз "
1 PRINT "Пятая буква w встречается в "; I ; "-й позиции"
END
2. Написать программу получения из заданной строки новой строки путём удаления всех символов «*» и повторения каждого символа, отличного от «*», дважды.
PRINT " Получение строки без звёздочек "
INPUT "Введите строку:"; S$
H$=" "
FOR I=1 TO LEN(S$)
IF MID$(S$, I, 1 )<> "*" THEN H$=H$+MID$(S$, I, 1 ) + MID$(S$, I, 1 )
NEXT I
PRINT H$
END
3. Написать программу подсчёта в заданной строке отдельно количества символов «a» , «b».
PRINT "Подсчёт количества символов a и b в строке"
INPUT "Введите строку:"; S$
A=0 : B=0
J= LEN(S$)
FOR I=1 TO J
IF MID$(S$, I, 1 )= "a " THEN A=A+1
IF MID$(S$, I, 1 )= "b " THEN B=B+1
NEXT I
PRINT "Буква a встречается в строке "; A ; " раз(а)"
PRINT "Буква b встречается в строке "; B ; " раз(а)"
END
4. Написать программу получения из заданной строки новой строки путём замены всех символов «1», «а».
PRINT "Замена в строке цифры 1 на букву а "
INPUT "Введите строку: "; S$
H$=" "
FOR I=1 TO LEN(S$)
X$= MID$(S$, I, 1 )
IF X$="1" THEN H$=H$+ " a " ELSE H$=H$ + X$
NEXT I
PRINT H$
END
Домашнее задание
Задача №1. Написать программу, проверяющую является ли заданное слово
палиндромом ( казак, шалаш, мадам).
PRINT "Проверка на палиндром"
INPUT "Введите слово, состоящее из прописных букв:"; S$
L=LEN(S$)
M=INT (L/2)
FOR I=1 TO M
K$=MID$(S$, I, 1 )
D$=MID$(S$, L-I+1, 1)
IF K$<>D$ THEN N$= "не" GOTO 1
NEXT I
N$=" "
1 PRINT "Слово"; S$; "-"; N$; " палиндром"
END
• Задача №2. Написать программу, которая печатает буквы заданного слова в обратном порядке.
PRINT "Печать букв слова в обратном порядке"
INPUT "Введите слово:"; S$
C=LEN(S$)
FOR R=C TO 1 STEP -1
PRINT MID$( S$,R, 1) ;
NEXT R
END