- •Введение
- •Лабораторная работа №1
- •4.2. Общая структура программы.
- •4.3. Вывод строки на экран
- •4.4. Ввод с клавиатуры
- •4.5. Комментарии
- •4.7. Переменные
- •Управляющие символьные константы
- •4.8. Операторы
- •4.8.1 Арифметические операторы
- •Арифметические операторы
- •4.8.2 Операторы сравнения и логические операторы
- •Операторы сравнения и логические операторы
- •4.8.3 Побитовые операторы
- •Побитовые операторы
- •Лабораторная работа №2 Разработка программы с применением
- •1. Задание по работе
- •2. Порядок выполнения работы
- •3. Содержание отчета
- •4. Краткое описание
- •4.1. Оператор выражение
- •4.4.2. Оператор switch
- •4.5. Операторы перехода
- •4.5.1. Оператор break
- •4.5.2. Оператор continue
- •4.5.3. Оператор return
- •4.5.4. Оператор goto
- •4.6. Операторы цикла
- •4.6.1. Оператор for
- •4.6.2. Оператор while
- •4.6.3. Оператор do..While
- •Лабораторная работа №3 Разработка программы обработки массива
- •1. Задание по работе
- •2. Порядок выполнения работы
- •3. Содержание отчета
- •4. Краткое описание
- •4.1. Массивы
- •4.1.1. Инициализация массивов
- •4.2. Строки
- •4.3. Понятие функции
- •4.3.1. Определение функции
- •4.3.2. Класс памяти
- •4.3.3. Тип возвращаемого значения
- •4.3.4. Формальные параметры
- •4.3.5. Тело функции
- •4.3.6. Фактические параметры
- •4.3.7. Рекурсивные вызовы
- •4.3.8. Передача параметров
- •4.3.9. Библиотека стандартных функций
- •4.2. Проектирование диалоговой панели.
- •4.3. Связывание элементов управления
- •4.2. Создание меню программы
- •4.3. Проектирование диалоговой панели
- •4.4. Связывание событий с элементами управления
- •4.4.1. Связывание переменной с окном редактирования.
- •4.4.2. Связывание кода с событием en_change окна редактирования
- •4.4.3. Связывание кода с пунктом CurrentSpeed меню File
- •4.4.4. Связывание кода с пунктом About меню Help
- •Библиографический список
4.7. Переменные
Переменная представляет собой имя ячейки памяти, которую должен использовать для хранения модифицируемого значения, чтобы память была доступна программе для использования, она должна быть закреплена за ней. Существует статическое и динамическое выделение памяти. Статическое выделение памяти происходит на этапе компиляции и размер блока не может быть изменен в течение времени выполнения программы. Динамическая память выделяется именно в процессе выполнения, и ее размер может зависеть от текущего состояния программы. Участок памяти, закрепленный за программой, используется для хранения данных.
Если данные могут меняться в процессе работы, то говорят об использовании переменных, если не могут – то констант. Для доступа к переменной или константе необходимо использовать имя или адрес.
Переменная - это именованная область памяти, значение которой может изменяться в процессе выполнения программы.
Все переменные должны быть объявлены для своего использования, для того чтобы компилятор смог выделить статическую память, поэтому ему требуется знать ее точный размер. Для того чтобы объявить переменную, необходимо указать: имя, адрес, размер (определяемый типом), значение.
Если объявление располагается внутри пары фигурных скобок (например, внутри тела функции), то объявленные переменные считаются локальными и память для них отводится в области стека программы, а начальное значение неопределенно.
Если переменная объявлена вне тел функций, то она считается глобальной и размещается в сегменте данных и ее начальное значение равно нулю. Объявление переменной с присвоением ей начального значения называется инициализацией.
Если функция имеет аргумент, следует объявить переменные, которые будут принимать их значения, эти переменные называются формальными параметрами.
В языке С++ существуют два классификатора, управляющих доступом и модификацией: const и volatile.
Константа – это именованная область памяти, значение которой не может изменяться в процессе выполнения программы. Константам всегда присваивается некоторое значение при объявлении, и оно не может быть изменено в дальнейшем. Переменные типа const не могут изменяться, однако их можно инициализировать.
Квалификатор volatile сообщает компилятору, что значение переменной может изменяться неявно. Например, адрес глобальной переменной передать таймеру операционной системы и использовать его для отсчета реального времени. В этом случае содержимое переменной изменяется без явного выполнения какого-либо оператора присваивания.
В языке С/С++ предусмотрены управляющие символьные константы, которые приведены в таблице 2.
Таблица 2.
Управляющие символьные константы
\b |
Пробел |
\f |
Прогон бумаги |
\n |
Новая строка |
\r |
Возврат каретки |
\t |
Горизонтальная табуляция |
\” |
Двойная кавычка |
\’ |
Одинарная кавычка |
\0 |
Нуль |
\\ |
Обратная косая черта |
\v |
Вертикальная табуляция |
\a |
Звуковой сигнал |
\? |
Знак вопроса |
\N |
Восьмеричная константа N |
\xN |
Шестнадцатеричная константа N |
Самые знаменитые служебные символы: перевод строки (код 13), возврат каретки (код 10), табуляция (код 9). Для задания их в программе в виде символьных констант используется сочетание двух видимых символов, а именно “\n”, “\r”, “\t” соответственно. Для представления символа “слэш“ используется конструкция “\\”
В языке С существуют четыре спецификатора хранения: extern, static, register, auto.
Эти спецификаторы сообщают компилятору, как хранить объявленную переменную. Общий вид объявления, использующего эти спецификаторы:
спецификатор_хранения тип имя_переменной
Главное предназначение спецификатора extern – указать, что объявляемый объект обладает внешними связями в рамках всей программы. В большинстве случаев объявление переменной одновременно является ее определением. Однако, указав перед именем переменной спецификатор extern, можно объявить ее, не определяя.
Если локальная переменная объявлена с помощью спецификатора static, компилятор выделит для нее постоянное место для хранения, как и для глобальной переменной.
Применение спецификатора static к глобальной переменной заставляет компилятор создавать глобальную переменную, видимую только в пределах текущего файла. Несмотря на то, что эта переменная остается глобальной, в других файлах она не существует.
Спецификатор register был разработан для того, чтобы компилятор сохранял значение переменной в регистре центрального процессора, а не в памяти, как обычно. Это означает, что операции над регистровыми переменными выполняются намного быстрее.