Цель урока: изучить строковые переменные, функции над строковыми переменными, посредством выполнения творческих заданий.
Задачи урока:
1. Образовательные:
- повторить и обобщить знания о процедурах и функциях графического режима в языке Бейсик;
- изучить методы организации решения задач на строковые переменные;
- закрепить использование строковых операторов и функций при решении задач.
2. Воспитательные и развивающие:
- в процессе урока развивать интерес к программированию на языке Бейсик, навыки самоконтроля и самооценки;
- развивать у студентов самостоятельность при решении задач на ПК, творчество, мышление, аккуратность и внимательность при выполнении заданий на ПК;
- научить студентов работать в ситуации целостной учебной деятельности.
Основные методы, применяемые на уроке: словесные, практические, наглядные, логические, самостоятельной работы, стимулирования и мотивации учебной деятельности, контроля, самоконтроля и самооценки.
Оборудование урока:
- карточки-самооценки;
- раздаточный материал с задачами на урок;
- ПК.
Тип урока: урок учебной деятельности (творческого развития).
План урока.
Обычный, «классический» тип урока творческого развития в себя включает следующие этапы урока.
На первом, ориентировочно-мотивационном этапе происходит:
- проверка домашних работ (прежде всего творческих);
- выравнивание знаний;
- постановка учебной задачи, создание ориентации и мотивации на изучение поставленной задачи.
На втором исполнительском этапе урока происходит:
- решение учебной задачи;
- формирование общего способа;
- моделирование знаний и способов;
- по шаговый самоконтроль;
- пошаговая самооценка усвоенного материала.
Ход урока
Проверка домашних работ и выравнивание знаний.
Основная домашняя работа проверяется фронтально. Решение задач записываются на доске, студент, выполняющий решение пошагово объясняет решение задач. Обсуждаются вопросы, которые вызвали затруднения при выполнении домашнего задания.
В это же время студенты, которые выполняли творческое домашнее задание, записывают свои программы на компьютере в среде Basic, демонстрируют свои проекты перед другими студентами.
Задания основной домашней работы:
- Составить программу ввода значения температуры воздуха t и выдачи текста «Хорошая погода!», если t >100, и текста «Плохая погода!», если t ≤ 100.
- Напишите программу вывода картинки на экран в графическом режиме.
Задание творческой домашней работы:
Нарисовать картинку, на которой обязательными элементами должны быть: домик с окном. Свет в окне зажигается нажатием клавиши “+”, гасится – клавишей “ – ”.
Постановка учебной задачи, создание ориентации и мотивации на изучение поставленной задачи.
Сегодня мы рассмотрим строковые переменные, имена которых отличаются от обычных добавлением знака $. В таких переменных могут содержаться как отдельные символы, так и их последовательности длиной до 255 символов. К ним в Бейсике применимы специальные операции.
Запишите тему сегодняшнего урока: «Описание строк. Операции над строками»
Для начала надо немного отвлечься, чтобы сообщить о том, что каждый символ, представленный на клавиатуре для компьютера переводится в числовой код. Эти коды объединены в стандартную международную таблицу кодов ASCII. Коды с 0 по 32 не имеют изображения на экране и служат для функций управления (пробел, клавиши управления курсором и т. д.). Далее следуют знаки препинания, цифры, строчные и прописные буквы латинского алфавита и другие символы, которые вы можете найти на клавиатуре. Всего их 128. А еще 128 кодов (от 129 до 255) служат для расширения возможностей клавиатуры, например для генерации национальных символов — в нашем случае для кириллицы. Учить их наизусть ни в коем случае не надо — они есть в таблице. Но если ее не окажется под рукой, то вы должны определить код любого символа, используя специальные функции asc и chr$.
Решение учебной задачи и формирование общего способа, моделирование знаний и способов.
Функции ASC и CHR$.
Функция asc определит нам код ASCII для первого символа этой строковой переменной и имеет следующую форму записи:
ASC (строковая переменная).
Например:
N=ASC("F").
? " Код заглавной буквы F —"; N
В результате получим:
Код заглавной буквы F — 70
Еще пример.
X$="YAHOO"
N= ASC (X$)
? N
В результате получим код первого символа, входящего в слово "YAHOO", т. е. "Y", который равен 89.
Замечание.
Следует помнить, что коды заглавных и строчных букв — разные.
Кроме того, если мы напрямую указываем в функции asc символ или текст, то он берется в кавычки (первый пример), а если это строковая переменная, то без кавычек (второй пример).
Функция chr$ определит нам символ, код которого указан в скобках. Форма записи функции:
CНR$ (код)
Например:
CLS
1: INPUT "Введите любой код от 33 до 128"; N
IF N < 33 OR N >=128 THEN? "Обратите внимание на числовые границы для кода"
GOTO 1
? "Символ с кодом "; N; "- это"; CHR$(N)
Обратите внимание на оформление программы. Сначала выполняется очистка экрана. Затем — запрос кода. Если он введен не в требуемых пределах, то программа возвращает человека к запросу — простейший, но очень полезный способ помочь пользователю.
Для уверенного использования строковых функций asc и chr$ выполните следующие задания:
№ 1. Опробуйте представленную выше программу и узнайте, что за символы скрываются под кодами 33, 66, 99, 100, 128.
Пошаговый самоконтроль и пошаговая самооценка усвоенного материала.
Перед тем, как вы приступите к самостоятельному выполнению заданий, хотелось бы напомнить критерии оценок:
Оценка "5".
Студент выполнил все задания практики, дает четкие и правильные ответы, выявляющие понимание материала и характеризующие прочные знания, легко устанавливает связь между теоретическими знаниями и практическими умениями, самостоятельно выполняет задания практических и лабораторных работ, не нуждается в помощи преподавателя.
Оценка "4".
Студент выполнил все задания практики, дает правильные ответы, способен установить связь между теоретическими знаниями и практическими умениями, овладел программным материалом, но допускает некоторую неполноту ответа и незначительные ошибки, при самостоятельном выполнении задания практических и лабораторных работ преподаватель оказывает незначительную помощь.
Оценка"3".
Студент выполнил не полностью задания практики, дает неполные ответы, построенные несвязно, выявляет общее понимание материала и характеризующее нетвердые знания, при выполнении заданий практических и лабораторных работ постоянно нуждается в помощи преподавателя.
Оценка"2".
Студент не выполнил задания практики, плохо знает теоретический материал, не владеет умениями и навыками для выполнения заданий лабораторных и практических работ.
Все задания проверяется преподавателем у каждого студента, заполняется карточка самооценки знаний.
Ф.И. студента _______________________.
Группа № ___________ подгруппа ______.
№ задания | № 1 | № 2 | № 3 | № 4 | № 5 | Итоговая оценка (выставляется преподавателем) |
Оценка |
Эта программа грамотно работает для первых стандартизированных 128 кодов. Чтобы правильно работать, например, с русским текстом, надо знать коды строчных и прописных букв кириллицы, которые скрываются в интервале от 129 до 255. Поэтому еще одно задание.
№ 2. Напишите программу, выводящую на экран символы, скрывающиеся за кодами 129—255. Распечатайте или выпишите коды строчных и прописных букв кириллицы.
Но, всякий раз вводить текст побуквенно — большая морока. Нельзя ли как-нибудь в Бейсике обрабатывать слова и строки? конечно, можно. Для этого существуют специальные функции.
Функция INPUT$.
Эта функция ожидает ввода N символов, которые и будут обрабатываться программой сразу после их набора на клавиатуре, не дожидаясь нажатия клавиши <Enter>. В этом заключается принципиальное отличие функции от оператора input.
Например:
СLS
N$=input$ (2)
IF Н$="да" THEN?N$ ELSE?"нет"
В данном случае программа после ввода с клавиатуры последовательности символов, анализирует ее, выделяя только два первых символа, и действует в зависимости от проверяемого условия.
Функция LEN.
Следующая функция — len. Она определяет длину введенной или существующей в переменной строковой переменной в символах. Синтаксис:
LEN(строковая_леременная)
Например:
CLS
INPUT "Введите Вашу фамилию"; F$
N=LEN(F$)
? "В вашей фамилии "; N; "букв"
Представленная программа выясняет количество букв во введенной пользователем фамилии. Причем, обратите внимание, что функция len учитывает не только буквы, но и символы, т. е. она распознает и пробелы, и знаки препинания, и цифры, содержащиеся во введенном тексте. Например:
CLS
INPUT "Введите Ваш адрес"; F$
N=LEN(F$)
? "В вашем адресе "; N; "символов"
№ 3. Определите с помощью предыдущего примера, сколько символов будет в следующем адресе:
107110, Россия, Москва, Сиреневый бульвар, 78-33
Функции LEFTS, RIGHT$ и МID$.
Для получения фрагмента строки (или значения строковой переменной) применяются специальные функции.
Функция left$ выделяет из введенной строковой переменной N символов слева:
LEFT$(строковая переменная, N)
Рассмотрим пример.
CLS
F$="ГА30Н0К0СИЛЬЩИК"
L$=LEFT$(F$, 5)
? L$
На экране появится слово "ГАЗОН", т. е. первые пять символов слева исходной строковой переменной.
Функция right$ вырезает из введенной строковой переменной n символов справа:
RIGHTS (строковая переменная, N)
Например:
CLS
F$="ГАЗОНОКОСИЛЫЦИК"
R$=RIGHT$(F$, 9)
? R$
На экране появится слово "КОСИЛЬЩИК", т. е. первые девять символов справа исходной строковой переменной.
Наконец, функция MID$ извлекает N2 символов, начиная с N1 исходной строковой переменной:
MID$ (строковая переменная, N1, N2)
Например:
CLS
F$="ГАЗОНОКОСИЛЬЩИК" M$=MID$(F$, 1, 4)
? М$
На экране появится слово "КОСИ", т. е. четыре символа, начиная с седьмого исходной строковой переменной.
Выполните упражнение.
№ 4. Напишите программу, которая выдаст на экран пять слов максимальной длины из слова "ЭЛЕКТРИЧЕСТВО". Побеждает тот, у кого сумма букв во всех словах наибольшая.
А теперь сделаем перерыв в работе с компьютером и порешаем задачи устно
Задана строка a$ = ”10 ноября 2004 года ”. Определите значения следующих функций:
- B = LEN (A$);
- C$ = LEFT$ (6, A$);
- D$ = RIGHT (6, A$);
- E$ = MID$ (A$, 8, 4);
- L = LEN (MID$ (A$,10));
- N$ =MID$ (A$, 15) + MID$ (A$, 4, 2).
МОЛОДЦЫ! Переходим к решению задач на ПК.
В качестве очередного примера приведем задачу подсчета слов во введенном тексте. Как известно, для компьютера словом является последовательность символов, заключенная в пробелы с двух сторон. Подчеркиваю, это не обязательно слово, в привычном для нас понимании, а любой набор символов, например, 45ро9) или ВАР56+УР47. Поэтому, в простейшем случае, подсчет количества слов во введенном тексте сводится к подсчету количества пробелов и добавлении к полученному значению единицы. (Почему так? Очень просто: слов два, а пробел между ними один; слов три — а пробелов два и т. д.) Получаем программу.
CLS
INPUT "Введите текст телеграммы"; W$
N=LEN(W$): K=0
FOR 1=1 ТО N
P$=MID$(W$, I, 1)
IF p$=I... THEN K=K+ I
NEXT I
? "В вашей телеграмме — "; K+l; "слов"
Программа работает очень просто. Она определяет длину текста в символах и заносит это число в переменную N. Затем устанавливает счетчику пробелов к нулевое значение. После чего, в цикле вырезает из текста последовательно по одному символу и проверяет, а не является ли он пробелом. Если это так, то увеличивает счетчик пробелов к на единицу, а если нет — берет следующий символ. По завершении цикла в переменной к хранится количество пробелов в тексте, и мы выводим ответ о количестве слов на экран, добавляя к “K” еще единичку. Запишите решение этой задачи в тетрадь.
№ 5. Используя пример с подсчетом слов в телеграмме, напишите программу, имитирующую отделение связи с очень хорошим обслуживанием. Программа должна выяснять имя клиента и в дальнейшем обращаться к нему только по имени. Запрашивается также регион, куда посылается телеграмма. Их три — Россия (коэффициент 1), страны СНГ (стоимость одного слова умножается на 2) и дальнее зарубежье (стоимость одного слова умножается на 5). По России стоимость одного слова составляет 1 руб. 50 коп. (причем неважно, какой длины слово). Затем у клиента запрашивается текст телеграммы и денежная сумма, определяется количество слов, стоимость телеграммы. Если денег ровно столько, сколько надо, его благодарят и прощаются. Если больше, чем надо, то ему предлагают сдачу и прощаются. Если — меньше, то просят добавить необходимую сумму, а затем, после расчета, с клиентом прощаются. А для пущей красоты я обычно прошу нарисовать окошко телеграфа, в прорезях которого и происходит диалог компьютера с пользователем (рис. 1).
Примерное решение задачи:
Screen 9
Color 4, 14
Line (75, 300)-(575, 100), 4, BF
Line (75, 100)-(325, 25), 2
Line (575, 100)-(325, 25), 2
Line (75, 100)-(575, 100), 2
PAINT (327, 75), 2
LOCATE 6, 34: Print "ТЕЛЕГРАФ
Line (100, 125)-(550, 150), 14, BF
Line (100, 175)-(550, 200), 14, BF
Line (100, 225)-(550, 250), 14, BF
LOCATE 10, 14: Print "ЗДРАВСТВУЙТЕ, КАК ВАС ЗОВУТ?"
LOCATE 10, 43: INPUT X$
LOCATE 14, 14: INPUT "ВВЕДИТЕ ПОЖАЛУЙСТА ТЕКСТ ТЕЛЕГРАММЫ"; Z$
LOCATE 17, 14: INPUT "ЗАПЛАТИТЕ ЗА ТЕЛЕГРАММУ"; Y
N = Len(Z$)
K = 0
For I = 1 To N
P$ = Mid$(Z$, I, 1)
IF P$ = " " Then K = K + 1
Next I
LOCATE 10, 14: Print "В ТЕЛЕГРАММЕ "; K + 1; " СЛОВО"
R = (K + 1) * 2
LOCATE 14, 14: Print "СТОИМОСТЬ ТЕЛЕГРАММЫ СОСТАВЛЯЕТ "; R; " РУБЛЕЙ"
IF Y = R Then: LOCATE 17, 14: Print "БЛАГОДАРИМ ВАС, ДО СВИДАНИЯ!"
IF Y > R Then: LOCATE 17, 14: Print " БЛАГОДАРИМ ВАС, ВОЗЬМИТЕ СДАЧУ"; Y -
R;" РУБЛЕЙ "
IF Y < R Then: LOCATE 17, 14: Print " ДОПЛАТИТЕ ПОЖАЛУЙСТА "; R - Y; "
РУБЛЕЙ"
LOCATE 17, 50: INPUT A
IF A = R - Y Then: LOCATE 17, 14: Print "БЛАГОДАРИМ ВАС, ДО СВИДАНИЯ!"
Подведение итогов урока, выставление оценок за урок.
Домашнее задание:
Основное:
- Примените функции asc и chr$ к примеру простейшей шифровки информации,
когда символы вводятся побуквенно, а программа определяет их код, добавляет к
ним 1 и
выводит на экран вместо введенного символа символ с новым получившимся кодом. Слово для тестовой проверки такой программы — "CAT", после его побуквенного введения должно получиться "DBU". - Напишите программу-дешифратор для предыдущего задания. Тестовая проверка: из слова "DBLJ" должно получиться слово "CAT". или:
Творческое:
- Дополните задачу «Телеграф» рисунками, орнаментом, движением геометрических фигур и т.д.
- Готовый проект нужно будет продемонстрировать на следующем уроке, программа должна быть записана в тетради.