
- •Цели программирования
- •Области языков программирования. Научные приложения.
- •Области языков программирования. Коммерческие приложения.
- •Области языков программирования. Искусственный интеллект.
- •Области языков программирования. Системное программирование.
- •Области языков программирования. Языки сценариев.
- •Области языков программирования. Web-программирование.
- •9. Уровни языков программирования. Языки ассемблера(история возникновения, отличительные особенности, пример языков).
- •10. Уровни языков программирования. Языки высокого уровня(история возникновения, отличительные особенности, пример языков).
- •11. Методы реализации программ. Компиляция (схема получения результата из исходного кода, преимущества и недостатки, сравнительная таблица).
- •12. Методы реализации программ. Интерпретация (схема получения результата из исходного кода, преимущества и недостатки, сравнительная таблица).
- •14. Методы реализации программ. Трансляция (схема получения результата из исходного кода, преимущества и недостатки, сравнительная таблица).
- •15. Критерии качества программ:
- •16. Алгоритм:
- •17. Способы записи алгоритма. Блок-схемы.
- •18. Способы записи алгоритма. Псевдокод.
- •19. Способы записи алгоритма. Сравнение различных подходов:
- •22. Концепция памяти
- •23. Принципы типизации данных.
- •24. Иерархия простых типов данных.
- •25. Смотри таблицу в конспектах
- •26. Правила приведения типов.
- •27. Оператор sizeof.
- •28. Переменные (объявление, инициализация, присвоение).
- •29. Константы. Специальные символы. Квалификатор const.
- •30. Область видимости переменных.
- •31. Операторы управления областью видимости.
- •32. Группы операций (особенности записи, таблица приоритетов).
- •37. Структурное программирование: историческая справка.
- •38. Принципы структурного программирования.
- •39. Структурное программирование: три базовые конструкции.
- •40. Основные операторы.
- •Пустой оператор.
- •Оператор присваивания (синтаксис, логика работы, полная и сокращённая форма, порядок выполнения, контекст вычисления, пример).
- •Составной оператор (синтаксис, логика работы, пример).
- •Условный оператор.
- •Неоднозначность условного оператора .
- •Оператор выбора (синтаксис, логика работы, пример)
- •48. Цикл с предусловием.
- •49. Цикл с предусловием.
- •50. Цикл с параметром
- •51. Взаимозаменяемость циклов
- •52. Оператор break
- •53. Оператор continue
- •54. Оператор ?: (синтаксис, логика работы, пример)
- •55. Ссылки (понятие, способы применения).
- •56. Подпрограммы (синтаксис, виды подпрограмм, контекст, пример).
- •57. Оператор return.
- •58. Прототипы функций (понятие, назначение, способы применения).
- •59. Библиотеки функций. Оператор #include.
- •60.Создание пользовательских библиотек
- •61. Способы передачи параметров в функции.
- •Способы передачи значения из одной функции в другую.
- •63. Рекурсия
- •64. Значения по умолчанию.
- •65. Перегрузка функции.
- •66.Перезагрузка операторов.
- •67.Шаблоны функций.
- •68. Разрешение неоднозначности при вызове функций.
- •69. Одномерные массивы (объявление, индексация, хранение в памяти, сортировка).
- •70. Типовые алгоритмы обработки элементов массива.
- •71.Двумерные массивы
- •72. Представление двумерного массива в виде одномерного. Соответствие индексов двумерного и одномерного
- •73. Многомерные массивы (объявление, индексация, хранение в памяти, сортировка). Пример
- •74. Указатели (назначение синтаксис, операции).
- •75. Различие между указателями и ссылками.
- •76. Динамическая память (выделение и освобождение памяти под переменные, одномерные массивы, двумерные массивы).
- •77. Тип данных «Массив массивов»
- •78. Представление строк в языках программирования. Достоинства и недостатки различных представлений (отличие ‘a’ от “a”).
- •Функции библиотеки cstring
- •Макросы
- •Типы данных
- •82. Файлы (понятие, текстовые и двоичные файлы, структурированные и неструктурированные, операции, основные библиотеки для работы с файлами).
- •Файловый ввод-вывод с использованием потоков
- •83. Потоковый ввод-вывод. Библиотека потокового ввода-вывода.
- •85. Файловый ввод-вывод. Стандартная библиотека ввода-вывода
- •87.Типовые алгоритмы обработки файлов
- •89.Создание простых бд с помощью массива структур.
- •90. Списки (определение, типовые операции, использование).
- •91. Создание простых бд с помощью списков.
31. Операторы управления областью видимости.
И так продолжаем изучение классов, на этот раз я хотел поговорить об операторах разрешения области видимости, научимся так же определять функции-члена, узнаете, что такое встраиваемые функции-члены.
Для начала обратите внимание на символ : : его используют между именем класса и именем его члена, а называют его оператором разрешения области видимости. Так же оператор :: используют для описания функции, где имя класса будет пустым.
addCourse () \\ дана функция
: :addCourse(int, float) \\ а вот так функция описана
Многие считают, что этот оператор не нужен, но в некоторых случаях такой оператор является необходимым.
float addCourse (in hours, float grade)
{
return hours*grade;
}
class student
{
public:
int semesterhours;
float gpa;
// добавить пройденный курс к записи
float addCourse (in hours, float grade)
<
//вызвать внешнюю функцию
weightedGPA=addCourse(semesterhours, gpa);
// вызвать ту же функцию для подсчета оценки с учетом нового курса
weightedGPA+=addcourse (hours, grade);
gpa= weightedGPA / semesterhours;
//вернуть новую оценку
return gpa;
}
}
В данном примере я хочу, чтобы функция-член student: : addCourse () вызывала функцию – не член :: addCourse (). Без оператора :: вызов функции addCourse () внутри класса student приведет к вызову функции student::addCourse ().
Обратите внимание на то, что вызов функции без указания имени класса приводит к тому что, она вызывает саму себя. Добавление оператора :: в начале имени заставляет осуществить вызов глобальной версии этой функции и это прекрасно:
//addCourse - функция перемножает кол-во часов и оценку
float addCourse (in hours, float grade)
{
return hours*grade;
}
class student
{
public:
int semesterHours;
flaot gpa;
//добавить прйденный курс к записи
float addCourse (int hours, float grade)
{
//вызвать внешнюю функцию
weightedGPA = ::addCourse (semesterHours, gpa);
//вызвать ту же функцию для подсчёта оценки с новым курсом
weightesGPA+=::addCourse(hours, grade);
gpa=weightesGPA/semesterHours;
//вернуть новую оценку
return gpa;
}
}
Определение функции-члена
Функция член может быть определена как внутри класса, так и отдельно от него. Определение внутри класса выглядит вот так:
class student
{
public:
int semesterHours;
flaot gpa;
//добавить прйденный курс к записи
float addCourse (int hours, float grade)
{
//Подчитаем суммарное время курсов с учётом среднего бала
float weightGPA;
weightedGPA = semesterHours * gpa;
//добавляем новый курс
semesterHours += hours;
weightedGPA+=grade * hours;
gpa = weightedGPA/semesterHours;
//вернуть новую оценку
return gpa;
}
}
А теперь давайте погорим подробно об определении функции-члена вне класса. Как правило, которое выявлено на практике многими программистами, для больших функций встраивание тела функции может привести к созданию очень больших и неразборчивых определений классов. Во избежание этого, C++ предоставляет возможность определять тела функции-члена вне класса.
class Student
{
public:
int semesterHours;
float; gpa;
//добавить пройденный курс к записи
float addCourse(int hours, float grade)
};
//Добавление информации о пройденом курсе к полям класса Student
float Student::addCourse(int hours, float grade)
{
float weightedGPA;
weightedGPA=semesterHours *gpa;
//Добавление нового курса
semesterHours+=hours;
weightedGPA+=grade * hours;
gpa=weightedGPA/semesterHours;
return gpa;
}
Самое интересное, что теперь объявление класса содержит только прототип функции addCourse (), а сама функция прописана в другом файле.
В примере класс и функция объявлены в одном файле. Советую, чтобы класс и тело функции находились в разных файлах.