7


Функции символьных величин

Автор публикации:
Дата публикации:
Краткое описание: Целью данного урока является знакомство учащихся с функциями обработки строк, научить использовать эти функции при решении задач. На данном уроке основное внимание уделяется знакомству с функциями обработки строк ( хотя рассмотрены и функции преобразования типов данн
предварительный просмотр материала

План-конспект урока информатики в 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




 
 
X

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

После этого кнопка ЗАГРУЗКИ станет активной!

Кнопки рекомендации:

загрузить материал