- •Часть 2
- •Раздел 3. Основы программирования
- •1.Цель работы
- •2.Контрольные вопросы
- •3.Методические указания
- •3.2.Структура программы
- •3.3.Имена и зарезервированные слова
- •3.4.Специальные символы
- •3.5.Константы и переменные
- •3.6.Оператор присваивания
- •Листинг 3.4. Пример множественного присваивания
- •3.7.Комментарии
- •4.Задание
- •Лабораторная работа №2 Арифметические операции и функции
- •1.Цель работы
- •2.Контрольные вопросы
- •3.Методические указания
- •3.1.Типы целых чисел
- •3.2.Типы вещественных чисел
- •3.3.Арифметические выражения
- •3.4.Функции
- •3.5.Преобразование типов
- •4.Задание
- •Лабораторная работа №3 Ввод и вывод данных
- •1.Цель работы
- •2.Контрольные вопросы
- •3.Методические указания
- •3.1. Ввод и вывод
- •3.2.Дополнительные возможности ввода/вывода
- •3.3.Форматированный ввод/вывод
- •4.Задание
- •Лабораторная работа №4 Логические операции
- •1.Цель работы
- •2.Контрольные вопросы
- •3.Методические указания
- •3.1. Условный оператор
- •3.2.Условная операция
- •3.3.Оператор выбора
- •3.4.Составной оператор
- •3.5.Сложные условия
- •3.6.Тип bool(логический)
- •3.7.Особенности работы условного оператора
- •4.Задание
- •Лабораторная работа №5 Циклические операции
- •1.Цель работы
- •2.Контрольные вопросы
- •3.Методические указания
- •3.1. Оператор цикла while (цикл с предусловием)
- •3.2.Оператор цикла do (цикл с постусловием)
- •3.3.Оператор цикла for (счетный цикл)
- •3.4.Вложенные циклы
- •3.5.Операторы прерывания цикла
- •4.Задание
- •Лабораторная работа №6 Указатели и массивы
- •1.Цель работы
- •2.Контрольные вопросы
- •3.Методические указания
- •3.1. Указатели
- •3.2.Константные указатели и указатели-константы
- •3.3.Операции над указателями
- •3.4.Массивы
- •3.5.Одномерные массивы
- •3.6.Указатели на массивы
- •3.7.Инициализация массивов
- •3.8.Операция sizeof
- •3.9.Определение новых типов
- •3.10.Многомерные массивы
- •4.Задание
- •Лабораторная работа №7 Функции и процедуры
- •1.Цель работы
- •2.Контрольные вопросы
- •3.Методические указания
- •3.1.Описание функций
- •3.2.Процедуры
- •3.3.Параметр-ссылка
- •3.4.Область видимости переменных
- •4.Задание
- •Лабораторная работа №8 Перегрузка функций
- •1.Цель работы
- •2.Контрольные вопросы
- •3.Методические указания
- •3.1.Полиморфизм
- •3.2.Перегрузка функций
- •3.3.Особенности перегрузки функций
- •3.4.Использование параметров по умолчанию
- •4.Задание
- •Лабораторная работа №9 Перечисления
- •1.Цель работы
- •2.Контрольные вопросы
- •3.Методические указания
- •4.Задание
- •Лабораторная работа №10 Строки символов
- •1.Цель работы
- •2.Контрольные вопросы
- •3.Методические указания
- •3.1.Данные типа char
- •3.2.Строковый тип string
- •4.Задание
3.4.Область видимости переменных
Принципы видимости переменных в языке C++ такие же, как и в языке Pascal - область видимости имени простирается от точки описания до конца блока, в котором появилось это описание. Блоком в языке C++ называется фрагмент текста, заключенный в фигурные скобки {} (составной оператор). Если имя не находится в описании функции (его обычно называют "глобальным именем"), то область видимости простирается от точки описания до конца файла, в котором появилось это описание.
Описание имени в блоке может скрывать описание в объемлющем блоке или глобальное имя, т.е. имя может быть переопределено так, что оно будет обозначать другой объект внутри блока. После выхода из блока прежнее значение имени (если оно было) восстанавливается. Например (Листинг 3.45):
Листинг 3.55. Область видимости переменных
В больших программах не избежать переопределения имен. т.е. дать одно имя разным переменным (возможно, находящимся в разных модулях). К сожалению, человек легко может проглядеть такое переопределение. Возникающие из-за этого ошибки найти непросто, потому что они достаточно редки. Следовательно, переопределение имен следует свести к минимуму. Если вы обозначаете глобальные переменные или локальные переменные в большой функции такими именами, как i или x, то сами напрашиваетесь на неприятности. Есть возможность с помощью операции разрешения области видимости :: обратиться к скрытому глобальному имени, например (Листинг 3.56):
int х;
void f2()
{
int x = 1; //скрывает глобальное х
::х = 2; //присваивание глобальному х
}
Листинг 3.56. Разрешение области видимости
4.Задание
4.1.Создайте программу «Безопасное объявление функции» (листинг 3.57):
Листинг 3.57. Программа «Безопасное объявление функции»
В разделе описаний этой программы проводится «предварительное» объявление функций Max и Min, по которым в самой программе производится поиск максимального и минимального значений из двух введенных значений переменных. В программе проводится обращение и печать результатов работы функций Max и Min, хотя эти функции описаны в конце программы.
4.2.Создайте программу «Процедура (функция) с параметром-ссылкой» (листинг 3.58):
Листинг 3.58. Программа «Процедура (функция) с параметром-ссылкой»
В разделе описаний этой программы проводится явная инициализация
массива R и описывается процедура ClearARRAY, по которой проводится печать массива R и его обнуление с печатью обнуленного массива. Обращение к процедуре ClearARRAY проводится в основном модуле программы.
4.3.В отчете к данной лабораторной работе опишите назначение каждого оператора для программ, которые приведены в задании, а также структурную схему (блок-схему) программы «Процедура (функция) с параметром-ссылкой».
Лабораторная работа №8 Перегрузка функций
1.Цель работы
Целью работы является изучение перегрузки функций.
