Паскаль — язык т.н. статической («сильной» .»постоянной») типизации. Это значит, что для каждой переменной требуется, чтобы переменная было объявлена с указанием к какому типуона принадлежит до использования этой переменной в теле программы. Далее мы изучим базовые типы данных и, как следствие, переменные, которые используются в Паскале.
Типы данных в Pascal
В Паскале выделяют 5 типов данных (в списке сразу укажем ключевые слова, с помощью которых обозначаются эти типы в программном коде):
- integer — целые числа.
- real — вещественные числа.
- boolean — логический тип данных (значения типа да/нет, истина/лож).
- char — символьный тип.
- string — строковый тип.
В этом уроке мы будем говорить об понятия общих для всех типов данных на примере конкретного типа данных — integer (целые числа).
Объявление переменных
Объявление переменных — это уведомление компилятора.Паскаль о том, что в вашей программе будут использоваться переменные с указанными именами, каждая из которых имеет определённый (указанный в секции объявления) тип.
Уроки Java для начинающих #7 / Видимость переменных
При объявлении переменной всегда указывают:
- Имя переменной.
- Тип переменной.
Объявление переменных происходит после ключевого слова var , до до тела программы.
В общем виде объявление переменной можно записать так (как схему):
Источник: dai-spisat.ru
Где объявляются переменные
Объявление переменных может быть расположено в трех местах: внутри функции, в определении параметров функции и вне всех функций. Это — места объявлений соответсвенно локальных, формальных параметров функций и глобальных переменных.
Локальные переменные
Переменные, объявленные внутри функций, называются локальными переменными. В некоторых книгах по С они называютсядинамическими переменными [2] . В этой книге используется более распространенный термин локальная переменная. Локальную переменную можно использовать только внутри блока, в котором она объявлена. Иными словами, локальная переменная невидима за пределами своего блока. (Блок программы — это описания и инструкции, объединенные в одну конструкцию путем заключения их в фигурные скобки.)
Локальные переменные существуют только во время выполнения программного блока, в котором они объявлены, создаются они при входе в блок, а разрушаются — при выходе из него. Более того, переменная, объявленная в одном блоке, не имеет никакого отношения к переменной с тем же именем, объявленной в другом блоке.
Чаще всего блоком программы, в котором объявлены локальные переменные, является функция. Рассмотрим, например, следующие две функции:
Целая переменная х объявлена дважды: один раз в func1() и второй — в func2(). При этом переменная х в одной функции никак не связана и никак не влияет на переменную с тем же именем в другой функции. Это происходит потому, что локальная переменная видима только внутри блока, в котором она объявлена, за пределами этого блока она невидима.
JavaScript #2: способы объявления переменных и констант в стандарте ES6+
В языке С есть ключевое слово auto (спецификатор класса памяти), которое можно использовать в объявлении локальной переменной. Однако так как по умолчанию предполагается, что все переменные, не являющиеся глобальными, являются динамическими, то ключевое слово auto почти никогда не используется, а поэтому в примерах в данной книге отсутствует.
Из соображений удобства и в силу устоявшейся традиции все локальные переменные функции чаще всего объявляются в самом начале функции, сразу после открывающейся фигурной скобки. Однако можно объявить локальную переменную и внутри блока программы (блок функции — это частный случай блока программы). Например:
char s[80]; /* эта переменная создается только
при входе в этот блок */
/* здесь переменная s невидима */
В этом примере локальная переменная s создается при входе в блок if и разрушается при выходе из него. Следовательно, переменная s видима только внутри блока if и не может быть использована ни в каких других местах, даже если они находятся внутри функции, содержащей этот блок.
Объявление переменных внутри блока программы помогает избежать нежелательных побочных эффектов. Переменная не существует вне блока, в котором она объявлена, следовательно, «посторонний» участок программы не сможет случайно изменить ее значение.
Если имена переменных, объявленных во внутреннем и внешнем (по отношению к нему) блоках совпадают, то переменная внутреннего блока «прячет» (т.е. скрывает, делает невидимой) переменную внешнего блока. Рассмотрим следующий пример:
int x; /* эта x прячет внешнюю x */
printf(«Внутренняя x: %dn», x);
printf(«Внешняя x: %dn», x);
Результат выполнения программы следующий:
Внутренняя х: 99
В этом примере переменная х, объявленная внутри блока if, делает невидимой внешнюю переменную х. Следовательно, внутренняя и внешняя х — это два разных объекта. Когда блок заканчивается, внешняя х опять становится видимой.
В стандарте С89 все локальные переменные должны быть объявлены в начале блока, до любого выполнимого оператора. Например, следующая функция вызовет ошибку компиляции в С89:
/* Эта функция вызывает ошибку компиляции
на компиляторе C89.*/
int j; /* ошибка в этой строке */
Однако в С99 (и в C++) эта функция вполне работоспособна, потому что в них локальная переменная может быть объявлена в любом месте внутри блока до ее первого использования.
Так как локальные переменные создаются и уничтожаются при каждом входе и выходе из блока, их значение теряется каждый раз, когда программа выходит из блока. Это необходимо учитывать при вызове функции. Локальная переменная создается при входе в функцию и разрушается при выходе из нее. Это значит, что локальная переменная не сохраняет свое значение в период между вызовами (однако можно дать указание компилятору сохранить значение локальной переменной, для этого нужно объявить ее с модификатором static).
По умолчанию локальные переменные хранятся в стеке. Стек — динамически изменяющаяся область памяти. Вот почему в общем случае локальные переменные не сохраняют свое значение в период между вызовами функций.
Локальные переменные можно инициализировать каким-либо заранее заданным значением. Это значение будет присвоено переменной каждый раз при входе в тот блок программы, в котором она объявлена. Например, следующая программа напечатает число 10 десять раз:
Источник: studfile.net
Урок №28. Инициализация, присваивание и объявление переменных
Этот урок является более детальным продолжением урока №10 .
Адреса и переменные
Как вы уже знаете, переменные — это имена кусочков памяти, которые могут хранить информацию. Помним, что компьютеры имеют оперативную память, которая доступна программам для использования. Когда мы определяем переменную, часть этой памяти отводится ей.
Наименьшая единица памяти — бит (англ. « bit « от «bi nary digi t» ), который может содержать либо значение 0 , либо значение 1 . Вы можете думать о бите, как о переключателе света — либо свет выключен (0 ), либо включен (1 ). Чего-то среднего между ними нет.
Если просмотреть случайный кусочек памяти, то всё, что вы увидите, — будет . 011010100101010. или что-то в этом роде. Память организована в последовательные части, каждая из которых имеет свой адрес . Подобно тому, как мы используем адреса в реальной жизни, чтобы найти определенный дом на улице, так и здесь: адреса позволяют найти и получить доступ к содержимому, которое находится в определенном месте памяти. Возможно, это удивит вас, но в современных компьютерах, у каждого бита по отдельности нет своего собственного адреса. Наименьшей единицей с адресом является байт (который состоит из 8 битов).
Поскольку все данные компьютера — это лишь последовательность битов, то мы используем тип данных (или просто «тип» ), чтобы сообщить компилятору, как интерпретировать содержимое памяти. Вы уже видели пример типа данных: int (целочисленный тип данных). Когда мы объявляем целочисленную переменную, то мы сообщаем компилятору, что «кусочек памяти, который находится по такому-то адресу, следует интерпретировать как целое число».
Когда вы указываете тип данных для переменной, то компилятор и процессор заботятся о деталях преобразования вашего значения в соответствующую последовательность бит определенного типа данных. Когда вы просите ваше значение обратно, то оно «восстанавливается» из этой же последовательности бит.
Кроме int, есть много других типов данных в языке C++, большинство из которых мы детально рассмотрим на соответствующих уроках.
Фундаментальные типы данных в С++
В языке C++ есть встроенная поддержка определенных типов данных. Их называют основными типами данных (или «фундаментальные/базовые/встроенные типы данных» ).
Вот список основных типов данных в языке C++:
Источник: dzen.ru