Напоминание

Работа со строками в С++


Автор: Сыроватский Константин Борисович
Должность: преподаватель
Учебное заведение: ГБПОУ КРК "Интеграл"
Населённый пункт: с.Курсавка
Наименование материала: Методическая разработка открытого урока
Тема: Работа со строками в С++
Раздел: среднее профессиональное





Назад





МИНИСТЕРСТВО ОБРАЗОВАНИЯ И МОЛОДЕЖНОЙ ПОЛИТИКИ

СТАВРОПОЛЬСКОГО КРАЯ

ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ПРОФЕССИОНАЛЬНОЕ

ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ

«КУРСАВСКИЙ РЕГИОНАЛЬНЫЙ КОЛЛЕДЖ «ИНТЕГРАЛ»

МЕТОДИЧЕСКАЯ РАЗРАБОТКА

ОТКРЫТОГО УРОКА
по дисциплине
Основы программирования

на тему
«Работа со строковыми переменными в языке программирования С++»
с. Курсавка

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


В раздел образования