О пространстве имен в языке программирования С++ для учащихся
Сущность механизма пространства имен, введенная в языке программирования C++ с целью решения проблемы совпадения имен (избежания конфликтов имен). Подбор стиля изложения материала так, чтобы он был понятен учащимся школ, которые начинают изучение.
Рубрика | Педагогика |
Вид | статья |
Язык | русский |
Дата добавления | 07.03.2018 |
Размер файла | 20,0 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
8
Размещено на http://www.allbest.ru/
Стерлитамакский филиал Башкирского государственного университета
О пространстве имен в языке программирования С++ для учащихся
Дмитриев Владислав Леонидович,
Батыршин Артем Ильдарович
Аннотации
В работе кратко рассматривается сущность механизма пространства имен, введенная в языке программирования C++ с целью решения проблемы совпадения имен (избежания конфликтов имен), которая может возникнуть, если при написании программы использованы несколько библиотек. Стиль изложения материала подобран таким образом, чтобы он был понятен учащимся школ, которые только начинают изучение языка программирования C++. Приведены практические примеры, поясняющие теоретический материал.
Ключевые слова: пространство имен, среды разработки, язык программирования
In the work briefly discusses the essence of the mechanism of namespaces, introduced in the C++ programming language to solve problems with the same name (avoiding name conflicts) that may occur, when for writing the program used several libraries. The style of presentation of the material is selected in such a way that it was clear to pupils that are just starting learning C++ programming language. Provides practical examples to explain theoretical material.
Keywords: of the development environment, the namespace, the programming language
Основное содержание исследования
Область применения языка программирования C++ в настоящее время весьма обширна, и включает создание операционных систем, разработку прикладных программ, написание драйверов устройств, разнообразных игровых приложений, и т.д. Поэтому можно сказать, что этот язык программирования является одним из самых популярных.
Тем не менее во многих школах не спешат переходить к изучению языка программирования С++, а используют язык программирования Pascal. Отчасти это связано с тем, что многие школьные учителя в свое время изучали именно Pascal. С другой стороны, этот язык программирования очень удобен в плане первоначального знакомства с языками программирования, ведь он создавался изначально именно в учебных целях [1, 4, 5]. В дальнейшем приобретенные знания позволяют приступить к изучению визуальных языков программирования, например, таких, как Delphi [2, 3, 6].
Однако для повышения востребованности современного выпускника очень важно знать язык программирования C++ и уметь работать в современных средствах разработки приложений.
В настоящее время для сред разработки на базе языка программирования C++ имеется огромное множество различных библиотек, одновременное использование которых в программе может привести к проблеме совпадения имен, заключающейся в использовании различными поставщиками библиотек одинаковых имен функций или переменных. Для решения такой проблемы в языке программирования C++ введен механизм пространства имен, суть которого кратко рассмотрен ниже.
Пространство имен (namespace) является механизмом отражения логического группирования, это некоторая объявляемая с помощью специальной конструкции область, служащая для ограничения области действия имен переменных и других объектов с целью исключения проблем, связанных с возможным использованием одинаковых имен. Так, в языке С++ имена могут быть присвоены переменным, функциям, классам, и т.д. По мере усложнения программного проекта или при использовании библиотек классов из нескольких источников могут возникнуть проблемы, связанные с конфликтом имен - конфликты пространства имен.
При использовании пространства имен, кроме необязательного глобального пространства имен (соответствует области объявления на уровне файла), выделяют несколько частных пространств. В разных частных пространствах могут быть использованы одинаковые имена переменных, функций, классов и других объектов - все они будут действовать в пределах своего частного пространства имен.
Пространство имен задается с использованием ключевого слова namespace следующим образом:
namespace имя { // объявления }
В результате такого определения пространства имен все имена, входящие в данное пространство имен, будут видимы только внутри этого пространства. Пространства имен могут находиться на глобальном уровне, или внутри других пространств имен, однако они не могут быть помещены в блок. Таким образом, имя, объявленное в пространстве имен, обладает по умолчанию внешним связыванием (при условии, что оно не ссылается на константу).
Приведем пример определения и использования пространства имен.
#include “stdafx. h”
#include <iostream>
using namespace std;
namespace solution
{ const double PI = 3.14159265358;
double area (double);
double sum (double, double);
void swap (int &, int &); }
double solution:: area (double x)
{ return PI*x*x; }
double solution:: sum (double x, double y)
{ return x+y; }
void solution:: swap (int &x, int &y)
{ int z = x; x = y; y = z; }
int main ()
{ setlocale (LC_ALL,”rus”);
cout<<”Число ПИ: “<<solution:: PI<<endl;
cout<<”10+12.4= “<<solution:: sum (10,12.4) <<endl;
int a = 10, b = 30;
cout<<”nПеременные до изменения: n”;
cout<<”a= “<<a<<”, b= “<<b<<endl;
solution:: swap (a,b);
cout<<”nПеременные после изменения: n”;
cout<<”a= “<<a<<”, b= “<<b<<endl;
system (“pause”); return 0; }
В данном примере определено пространство имен solution, содержащее одну константу и три функции. При этом сами внутри пространства имен описаны только прототипы функций, а сами функции описаны ниже (раздельное описание интерфейса и реализации). Можно, конечно, реализацию функций также описать внутри пространства имен solution, однако во многих случаях это неудобно.
Для доступа к именам пространства имен solution используется операция разрешения области видимости (::), которая позволяет уточнить имя, указав его вместе с пространством имен. Например:
solution:: swap (a,b);
Пространства имен открыты. Это означает, что можно включать новые имена в соответствующие пространства имен:
namespace solution
{ int max (int, int); }
Код функции max () можно поместить далее в этом же (или другом) файле, воспользовавшись пространством имен solution:
namespace solution
{ int max (int x, int y)
{ if (x>y) return x; else return y; } }
Открытость пространства имен позволяет реализовывать различные интерфейсы для различных категорий пользователей, открывая для них только необходимые фрагменты пространства имен.
Необходимость уточнять имена при частом их использовании достаточно неудобно. Поэтому, если необходимо часто применять операцию разрешения области видимости, целесообразно использовать объявление using, которое позволяет получить доступ к конкретному имени в пространстве имен; директива usingоткрывает доступ ко всем именам в каком-либо пространстве имен.
Для получения доступа к отдельному имени в пространстве имен используется следующий формат объявления using:
using имя_пространства_имен :: имя;
Например, чтобы обеспечить доступ к функции sum () пространства имен solution из функции main () приведенной выше программы, достаточно написать:
using solution:: sum;
После этого в программе выше вместо записи
solution:: sum (10,12.4);
можно будет везде, где необходимо, использовать запись
sum (10,12.4);
Как было сказано выше, директива using делает доступными все имена. Директива using создается путем включения ключевых слов using namespace перед идентификатором пространства имен:
using namespace solution;
После этого все имена данного пространства имен становятся доступными без необходимости использования операции разрешения области видимости. Если данная директива размещена на глобальном уровне (до функции main ()), имена пространства имен становятся глобально доступными. Если поместить директиву using в отдельную функцию, имена будут доступны только в этой функции.
Следует помнить, что применение директивы using и множества объявлений using не равнозначно. Так, если некоторое имя уже объявлено в некоторой функции (в общем случае - в функции main ()), то нельзя импортировать то же самое имя с помощью объявления using. Однако в случае использования директивы using имеет место разрешение имен.
В примере ниже рассматривается ситуация, когда директива using импортирует имя, уже объявленное в программе. В таком случае локальное имя будет перекрывать имя из пространства имен, также, как оно перекрывало бы глобальную переменную с тем же именем. Для доступа к нужному имени можно использовать операцию разрешения области видимости.
#include “stdafx. h”
#include <iostream>
using namespace std;
namespace solution
{ const double PI = 3.14159265358;
double area (double); }
double solution:: area (double x)
{ return PI*x*x; }
const double PI = 1.38; // глобальная константа
int main ()
{ setlocale (LC_ALL,”rus”);
using namespace solution;
const double PI = 2.17; // локальная константа
cout<<PI<<endl; // 2.17
cout<<:: PI<<endl; // 1.38
cout<<solution:: PI<<endl; // 3.14159
system (“pause”); return 0; }
Как было отмечено выше, объявления пространств имен могут быть вложенными:
namespace space_1
{ namespace space_2
{ int a;
…; }
double b; }
В рассматриваемом случае ссылка на переменную a аналогична записи space_1:: space_2:: a. Также, с помощью директивы using можно сделать доступными внутренние имена:
using namespace space_1:: space_2;
Директивами и объявлениями using можно пользоваться также и внутри пространств имен.
Для пространств имен можно создать псевдоним. Это может оказаться оправданным, если имя пространства имен достаточно велико (состоит из большого числа символов). Так, для рассмотренного выше пространства имен solution можно сделать псевдоним sol:
namespace sol = solution;
язык программирование конфликт имя
Библиографический список
1. Дмитриев В.Л., Ахмадеева Р.З. Развитие конструктивного мышления при изучении программирования // Информатика и образование. 2009. № 2. - С.69-73.
2. Дмитриев В.Л. Тестирование в игровой форме как способ проверки усвоения учебного материала // Информатика в школе. 2012. №10 (83). - С.41-43.
3. Дмитриев В.Л. Компьютерная программа для проведения тестирования с поддержкой произвольного расположения материалов теста // Информатика и образование. 2014. №2 (251). - С.74-77.
4. Дмитриев В.Л. Поэтапная разработка программы в среде Turbo Pascal на примере поиска пути с использованием волнового алгоритма // Информатика и образование. 2013. № 8. - С.29-33.
5. Дмитриев В.Л. Развитие представлений об объектном программировании на примере разработки объектов в среде программирования Turbo Pascal // Информатика в школе. 2014. № 2. - С.54-59.
6. Дмитриев В.Л. Опыт отбора задач для активизации интереса школьников к изучению программирования // Информатика в школе. № 4.2015. - С.26-33.
Размещено на Allbest.ru
...Подобные документы
Разработка урока по определению склонения имен существительных. Развитие умения распознавать тип склонения существительного по совокупности признаков (род, окончание в именительном падеже). Воспитание бережного отношения к природе. Развитие внимания.
разработка урока [611,1 K], добавлен 21.12.2010Особенности развития активного словаря имен прилагательных у детей с общим недоразвитием речи (ОНР). Разработка системы работы по формированию активного словаря имен прилагательных у детей старшего дошкольного возраста с ОНР средствами дидактических игр.
дипломная работа [196,4 K], добавлен 07.07.2014Определение роли и места работы над синонимами имен прилагательных на уроках русского языка в начальной школе. Построение экспериментально обоснованной методической модели обучения основным лексическим умениям в работе с синонимами имён прилагательных.
дипломная работа [120,7 K], добавлен 16.06.2011Исследование алфавита и синтаксиса языка Python. Темы и основные понятия факультативного курса "Основы программирования на языке Pyhton", адаптация теоретического материала для учащихся 10–11 классов. Разработка лабораторных работ по данной теме.
дипломная работа [2,3 M], добавлен 25.06.2013О вариантности дидактического материала по орфографии. Варианты орфограмм, изучаемые в начальной школе, их степень трудности. Методика изучения темы правописание буквы ь после шипящих на конце имен существительных с учетом вариантов орфограмм.
реферат [65,1 K], добавлен 07.07.2008Психолого-педагогические особенности развития старших школьников и преподавания программирования в старших классах. Тематическое планирование учебного материала. Программа и содержание факультативного курса "Программирование на языке JavaScript".
дипломная работа [1,0 M], добавлен 27.06.2011Творчество представителей поэзии Витебщины и Смоленщины. Происхождение трасянки на основе смешения русского и белорусского языков, ее лингвистические и грамматические особенности. Проведение урока русского языка по теме: "Разряды имен числительных".
контрольная работа [23,7 K], добавлен 05.06.2011Дидактические и методические основы обучения алгоритмизации и программированию в рамках углубленного курса информатики для технологического профиля. Методика изучения программирования на языке Java" с применением элементов электронного обучения.
дипломная работа [2,5 M], добавлен 13.12.2017Разработка урока на тему "Введение в языки программирования" в соответствии с типовым учебным и календарно-тематическим планами обучения предмету "Языки программирования". Алгоритм проведения урока: проверка прошедшего материала, изложение новой темы.
курсовая работа [441,7 K], добавлен 25.09.2010Особенности влияния родного языка при обучении иноязычному произношению. Процесс предъявления иноязычных звуков. Описание наиболее эффективных фонетических упражнений для успешного формирования произносительных навыков у учащихся на английском языке.
курсовая работа [42,7 K], добавлен 14.11.2010Песня как вид аутентичного материала в процессе обучения коммуникативной компетенции. Педагогические основы использования песенного материала на уроках английского языка. Песня на иностранном языке как средство развития навыков аудирования у учащихся.
дипломная работа [941,3 K], добавлен 18.04.2015Обзор учебно-методической литературы по программированию. Особенности формирования алгоритмического стиля мышления школьников. История создания и особенности системы ЛогоМиры 2.0. Методика преподавания темы "Среда программирования ЛогоМиры" в 7 классе.
дипломная работа [1,8 M], добавлен 10.09.2011Изучение задач, которые в современной образовательной системе выполняет социально-психологическая поддержка учащихся. Изучение специфики психологического сопровождения детей на этапе перехода из дошкольного образовательного учреждения в начальную школу.
курсовая работа [35,7 K], добавлен 06.06.2010Понятие билингвизма. Общие особенности развития детей-билингвов. Детский билингвизм как педагогическая проблема. Значение родного языка в общем развитии ребенка. Проблемы школьного обучения на неродном языке, двуязычное образование как вариант их решения.
курсовая работа [51,3 K], добавлен 04.11.2016Структура методического анализа. Отбор учебного материала, его методическая редукция, цели, эффективные методы обучения. Анализ содержания учебного материала по теме "Языки программирования баз данных и СУБД". Разработка урока теоретического обучения.
курсовая работа [204,4 K], добавлен 19.06.2011Говорение как вид речевой деятельности. Известные методы обучения говорению на иностранном языке, трудности их применения на среднем этапе. Психологические и физиологические характеристики учащихся средних классов. Разработка упражнений по говорению.
курсовая работа [35,4 K], добавлен 11.06.2014Концепция профильного обучения на старшей ступени общего образования. Психологические особенности учащихся с гуманитарными складом мышления. Задачи для изучения тем линейных алгоритмов, алгоритмов с ветвлениями и с повторениями по курсу программирования.
курсовая работа [84,0 K], добавлен 14.01.2014Понятие пространственного мышления и психолого-педагогические основы его формирования у учащихся общеобразовательных школ. Функции пространственного мышления и роль в его развитии математики, методика формирования при изучении векторного пространства.
курсовая работа [65,1 K], добавлен 22.05.2009Организация исследовательской деятельности учащихся как актуальная психолого-педагогическая проблема в современном образовательном пространстве, ее психолого-педагогические предпосылки. Анализ опыта работы школ по данному направлению деятельности.
дипломная работа [190,5 K], добавлен 17.04.2011Психологические основы и лингвистические особенности обучения чтению. Трудности обучения чтению на английском языке. Методика организации процесса обучения на иностранном языке в условиях школы, содержание и отбор материала. Характеристика видов чтения.
дипломная работа [243,7 K], добавлен 11.11.2011