Автор: Сыроватский Константин Борисович Должность: преподаватель Учебное заведение: ГБПОУ КРК "Интеграл" Населённый пункт: с.Курсавка Наименование материала: Методическая разработка открытого урока Тема: Работа со строками в С++ Раздел: среднее профессиональное
ОТКРЫТОГО УРОКА
по дисциплине Основы программирования
на тему «Работа со строковыми переменными
в языке программирования С++»
с. Курсавка
2016
Методическая разработка предназначена для подготовки обучающихся по спе-
циальности 09.02.03
«Программирование в компьютерных системах» в рамках дис-
цилины «Основы программмирования»
Организация разработчик: ГБПОУ КРК «Интеграл»
Разработчик: Сыроватский К.Б., преподаватель ГБПОУ КРК «Интеграл»
Рассмотрено, утверждено и рекомендовано к применению на заседании методи-
ческого Совета ГБПОУ КРК «Интеграл»
Протокол №_____ от «___»___________20__ г.
Председатель М.А.Уманская
357070 Ставропольский край,
Андроповский район,
с.Курсавка, ул. Титова, 15
тел.: 8(86556)6-39-82, 6-39-83
факс:6-39-79
kurs_
integrall@mail.
ru
2
Пояснительная записка
Изучение основ программирования связано с развитием целого ряда таких
умений
и
навыков,
которые
носят
интеллектуальный
характер
и
формирование
которых – одна из приоритетных задач при подготовке будущих программистов.
Изучение
программирования
развивает
мышление
студентов,
способствует
формированию
у
них
многих
приемов
умственной
деятельности.
Поэтому
не
использовать действительно большие возможности программирования для развития
мышления
студентов,
формирования
многих
общеучебных,
интеллектуальных
умений и навыков было бы, наверное, неправильно.
Изучая
программирование
на
С++,
обучаемые
прочнее
усваивают
основы
алгоритмизации, приобщаются к алгоритмической культуре, познают азы профессии
программиста.
На данном занятии проводится работа по обобщению и закреплению знаний
студентов
по
теме
«Структурированный
тип
данных.
Массивы».
Так
как
при
изучении этой темы необходимы навыки работы с одномерными массивами.
Система задач и упражнений подобрана так, чтобы каждая следующая задача
была достаточно похожа на предыдущую, доступна для решения и в то же время
несла элемент новизны, поднимала на приобретаемые знания на новый уровень.
На
занятии
использованы
личностно-ориентированная
и
практико-
ориентированная технология обучения.
3
Методика проведения мероприятия.
Урок
проводится
согласно
тематического
планирования
с
обучающимися
второго
курса
специальности 09.02.0
«Программирование
в
компьютерных
системах» в группе ПР-29 (23 человека.
В
начале
урока
проводится
повторение
предыдущей
темы
(«Массивы»)
в
форме опроса. Сформированные знания предыдущей темы являются важными для
усвоения материала урока. Необходимо акцентировать внимание обучающихся на
взаимосвязи двух тем.
После
проведения
опроса
следует
объяснение
нового
материала
с
применением презентации и пояснениями на примерах.
Практическая часть урока проводится с малыми группами (совместная работа
в
паре)
.
Перед
проведением
практической
части
проводится
инструктаж
(последовательность выполнения работы, форма оценивания).
Практическая работа состоит из двух заданий. Первое задание выполняется
совместно с преподавателем в группах по два обучающегося с применением карточек
–
заданий.
Второе
задание
выполняется
самостоятельно
на
компьютерах.
Закрепление проводится в виде игры. В конце урока: объявление оценок, запись
домашнего задания.
4
План–конспект урока
По дисциплине Основы программирования
Урок разработал: Сыроватский К.Б.
Группы ПР-29
Продолжительность занятия: 1 пара (90 мин)
Тема: «Работа со строковыми переменными…….»
Тип занятия: Комбинированный урок.
Методы обучения: опрос, объяснение нового материала с примерами, практическая работа с эле -
ментами игры.
Форма организации учебной работы: фронтальная и коллективная (по группам)
Учебно–методическое оснащение: презентация «Работа со строковыми переменными», раздаточ-
ный материал (памятки по процедурам и функциям, карточки на практические задания по группам .
Материально-техническое оснащение:
ПК, проектор, доска.
Цель:
научить обучающихся рационально использовать стандартные процедуры и функции языка
программирования С++ для работы со строковыми и символьными переменными.
Задачи :
Образовательная: изучение приемов работы со строковыми переменными: определение длины,
нахождение заданных символов или их сочетаний в строке, вывод строк различными способами,
получение из исходных строк новых путем применения операций вставки, копирования и удаления.
Развивающая: формирование познавательных и профессиональных интересов и способностей.
Воспитательная : воспитание добросовестности, внимания, ответственности перед однокурсника-
ми при выполнении практической работы.
Ход урока
I. Организационный момент (5 мин.)
1.
Подготовка студентов к уроку (по группам );
2.
Проверка присутствующих.
II. Повторение предыдущей темы ( 15 мин.)
1.
Познакомить студентов с планом и целями урока (на доске).
2.
Повторить предыдущий материал по теме «Массивы в языке программирования С++» по во-
просам:
Что такое массив? (Поименованная ограниченная последовательность однотипных
элементов.)
Какие бывают массивы? (Одномерные и многомерные.)
Как называется массив, хранящий прямоугольную таблицу? (Матрицей.)
Какие бывают матрицы? (Прямоугольные и квадратные.)
Как определить размер массива? (Число элементов * размерность.)
Как можно заполнить массив? (Присваиванием, вводя значения элементов с клавиа-
туры, случайным образом с помощью генератора случайных чисел.)
Как обращаться к отдельным элементам массива? (По имени и индексу (номеру) –
A[4], B[2][3])
Какие простые действия над данными типа массив вам известны? (Вывод на экран
различным образом, сравнение, нахождение суммы элементов массива,.)
Каждой группе предлагается по 2 вопроса. Ответы студентов оцениваются.
5
III. Объяснение нового материала (25 мин.)
Тема и основная цель урока – на экране (Презентация).
Актуальность данной темы обоснована частым использованием подобных операций над
строковыми (текстовыми) данными в различных языках программирования, например, при про-
граммировании в среде программирования на С++ (Технология разработки программных про-
дуктов, 4 курс). Эти знания могут пригодиться при разработке курсового и дипломного проек-
тов и в дальнейшей вашей работе по специальности.
Объяснение нового материала происходит при показе презентации, в которой отображены
основные моменты новой темы с примерами и вопросами по ним для лучшего усвоения. При
этом преподаватель проводит аналогию с предыдущей изученной темой «Массивы» (отмечают-
ся сходства и отличия). После объяснения темы в качестве закрепления предлагаются две ко-
роткие программы для устной работы со всеми студентами.
1 слайд
2 слайд
3 слайд
4 слайд
5 слайд
6 слайд
6
7 слайд
8 слайд
9 слайд
10 слайд
11 слайд
12 слайд
13 слайд
14 слайд
7
15 слайд
16 слайд
17 слайд
18 слайд
19 слайд
8
IV.
Практические задания (25 мин.)
Преподаватель : Для работы над практической частью каждая группа делится на две подгруп -
пы:
Первая подгруппа выполняет индивидуальное практическое задание за ПК, затем защи-
щает его перед всей группой. За правильно выполненное задание подгруппа набирает опреде-
ленное количество баллов.
Студентам подгрупп раздаются карточки индивидуальных практических заданий.
Карточка №1 Бегущая строка. Введенное слово «пробегает» по экрану слева направо.
Пример программы
#include "stdafx.h"
#include <iostream>
#include <locale>
#include <conio.h>
#include <windows.h>
#include <stdio.h>
#include <cstring>
using namespace std;
int _tmain()
{
char str1[256]; int a,b;
a=0;
b=10;
//HANDLE hConsole;
//hConsole=GetStdHandle (STD_OUTPUT_HANDLE);
//setlocale(LC_ALL,".1251");//русский язык для диалога
cout<<"Введите предложение:"<<endl;
cin.getline(str1,256);
system("cls");
COORD x={0,10};//координаты начала предложения
SetConsoleCursorPosition(hConsole,x);
setlocale(LC_ALL,".866");//выводим русскоязычное послание в движимой
строке
cout<<str1<<endl;
for (a=0;a<80;a++)
{
COORD d={a,b};
SetConsoleCursorPosition(hConsole,d);
cout<<str1;
Sleep(50);
system("cls");
}
while (a>=0)
{
for (a=0;a<79;a++)
9
{
COORD d={a,b};
SetConsoleCursorPosition(hConsole,d);
cout<<str1;
Sleep(50);
system("cls");
}
}
getch();
return 0;
}
Карточка №2 Посчитать, сколько раз встречается указанный пользователем символ, во вве-
денной строке .
Пример
программы
#include <iostream>
using namespace std;
void main()
{
setlocale(LC_ALL, "Russian");
char line[100];
cout << "Введите строку:";
cin.getline(line, 100);
/*cout << "Введите символ:";*/
int count = 0;
for (int i = 0; i < 100; i++)
{
if (line[i] == '1'){
count++;
}
}
cout << "В предложении " << count << " символ (-а, -ов)!";
cin.get(); cin.get();
}
Карточка №3 Инвертировать введенное слово (вывести его на экран справа налево).
Пример программы
#include <stdio.h> //необходимо для puts и gets
#include <string.h> //необходимо для strlen
#include <conio.h> //необходимо для getch
#include <iostream.h> //необходимо для cin и cout
void main()
{
char C,S[10]; //объявлем массивы
int i; //объявляем переменную
clrscr(); //очищаем экран
cout<<"Vvedite stroky<Enter>";
10
cout<<"->"; //
gets(S); //ввод строки и помещение её в массив S
for (i=0; i<=(strlen(S)-1)/2; i++) //переборка массива
{
C=S[i];
S[i]=S[strlen(S)-i-1]; //переворачиваем строку
S[strlen(S)-i-1]=C;
}
cout<<"\nPerevernutaj stroka\n";
puts(S); // выводим результат
getch(); //задержка программы
}
Карточка №4 Расшифруйте слово. Алгоритм шифрации: каждая буква дублируется (т.о.
необходимо вывести только четные или нечетные символы строки).
Пример программы
#include <iostream>
using namespace std;
int main(){
char str[80],str1[40];
int counter =0;
cout << "Enter string.\n";
cin.getline(str,80);
for(int i(0); i < strlen(str); i++)
if(i % 2 == 0){
str1[counter] = str[i];
str1[counter+1] = '\0';
counter++;
}
cout << str1 << endl;
system("pause >> void");
return 0;
}
Карточка №5 Пользователь вводит ФИО в одну строку. Вывести отдельно фамилию, имя,
отчество.
Пример программы
2
3
4
5
6
#include <iostream>
#include <conio.h>
#include <locale>
using namespace std;
int main()
{
11
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
char *tempSlova = new char[20];
char *myString = new char[100];
cout << "Введите строку: ";
fflush(stdin);
gets(myString);
cout << "Слова с втроке:" << endl;
for(int i = 0, k =0 ; i <= strlen(myString); i++, k ++)
{
if(myString[i] == ' '|| myString[i] == '\0')
{
tempSlova[k] = '\0';
puts(tempSlova);
k = -1;
}
else
tempSlova[k] = myString[i];
}
getch();
return 0;
}
Вторая подгруппа работает с карточками заданий за столами. В итоге работа сдается на
проверку преподавателю. За правильно выполненное задание студенты подгруппы набирают
определенное количество баллов.
Примеры заданий:
Используя изученные процедуры и функции, составить новое слово из слова
« АЛГОРИТМИЗАЦИЯ »:
1.
ЗАЯЦ
2.
ГРАЦИЯ
3.
ИМИТАЦИЯ
4.
МИЛИЦИЯ
5.
ЛИМИТ
6.
ЛОЦИЯ
Правильные ответы:
12
Предположим, что str=’АЛГОРИТМИЗАЦИЯ’;
1) s=str.substr(10,2);
{ЗА}
s+= str.substr(s.size(),1); {ЗАЯ}
s= str.substr (12,1);
{ЗАЯЦ}
2) s.erase(1,2);
{ГОРИТМИЗАЦИЯ}
s.erase (2,1);
{ГРИТМИЗАЦИЯ}
s.erase (3,5);
{ГРАЦИЯ}
3)
im= str.substr (6,1);
{И}
im= str.substr (8,1);
{ИМ}
s.erase (1,5);
{ИТМИЗАЦИЯ}
s.erase (2,3);
{ИТАЦИЯ}
s=im+str;
{ИМИТАЦИЯ}
4) s= str.substr (8,2);
{МИ}
s=s+ str.substr(2,1);
{МИЛ}
s=s+ str.substr(6,1);
{МИЛИ}
s.insert(s.size(), str.substr(12,3));
{МИЛИЦИЯ}
5) s= str.substr(2,1);
{Л}
s=s+ str.substr(6,1);
{ЛИ}
s=s+ str.substr(8,2);
{ЛИМИ}
s=s+ str.substr(7,1);
{ЛИМИТ}
6) str.erase(3,1);
{АЛОРИТМИЗАЦИЯ}
str= s.erase(2,2);
{ЛО}
str=s+ s.erase (12,3);
{ЛОЦИЯ}
В результате набранные двумя подгруппами баллы суммируются, и каждый представи -
тель группы получает оценку за работу на уроке.
V. Закрепление материала - игровой момент урока «Выбери» (12 мин.)
Данный этап проходит по следующему принципу: Преподаватель задает вопрос по материа-
лу урока, один из студентов читает подготовленный вариант ответа. Задача остальных – определить
правильность, неверность или некорректность ответа.
1.
Как определяется длина строковой переменной?
Вариант ответа: «На длину строки влияют буквенно-цифровые символы, но не влияют
знаки препинания».
(Неверно. Влияют все символы, заключенные в апострофы.)
2.
Есть ли разница при описании строковых переменных в программе по сравнению с
описанием массива?
Вариант ответа: «Есть. При описании строковой переменной ее размер не указывает-
ся, а определяется при задании ей значения в программе».
(Некорректно. При описании строковой переменной ее размер можно указать
явно, а можно не указывать.)
3.
Что происходит со строковыми переменными после выполнения операции копирова-
ния?
Вариант ответа: «Операция копирования не меняет содержимое исходной строки».
(Правильно.)
4.
Что происходит со строковыми переменными после выполнения операции DELETE?
Вариант ответа: «Операция DELETE не меняет содержимое исходной строки».
13
(Неверно. Исходная строка урезается на количество удаляемых символов, т.е.
меняется ее содержимое и длина.)
VI. Выдача домашнего задания (3 мин.)
Повторить записи по тетради. Каждому студенту из букв своей фамилии и своего имени
(ввести с клавиатуры в качестве значения одной строковой переменной) составить по 2 новых сло -
ва, используя различные функции и процедуры для работы со строковыми переменными.
VII. Подведение итогов (5 мин.)
Преподаватель: Что сегодня было изучено на уроке?
Ответы студентов….
Преподаватель подводит итог: В ходе урока мы изучили и закрепили знания по теме «Ра-
бота со строковыми переменными в Паскале», применив их на практике. Из практических заданий
видно, что для большинства студентов тема оказалась несложной, так как они владеют достаточны -
ми базовыми знаниями по предыдущему материалу курса.
Каковы же результаты? – Таблица с критериями оценок и набранными баллами.
Количество набранных баллов
группы
ФИО
Повторение материала
Практические задания
ИТОГО
Ответ на 1
вопрос
Ответ на 2
вопрос
Работа на
уроке
На ПК
На А4
Решение за-
дачи
Защита ра-
боты
5 баллов
5 баллов
5 баллов
5 баллов
5 баллов
5 баллов
30 баллов
Критерии оценок
«Отлично» - 27-30 баллов «Хорошо» - 21-26 баллов
«Удовлетворительно» - 16-20 баллов
Литература:
Основные источники:
1.
Семакин
И.Г.,
Шестаков
А.П.
Основы
программирования.
-
М.:
ACADEMA, 2013.
Дополнительные источники:
1.
Дейтел Х.М., Дейтел П.Дж. Как программировать на С++. - М.: Бином-
Пресс, 2013.
2.
Культин Н.Б. С/С++ в задачах и примерах. - СПб: BHV-СПб, 2012.
3.
Лаптев В.В., Морозов А.В., Бокова А.В. С++ объектно-ориентированное
программирование. Задачи и упражнения. – СПб.: ПИТЕР, 2013.
4.
И.Г.
Семакин.
Основы
программирования.
-
М.:
«Мастерство»,
2011.
-
cтр.98-102
14