Сегодня мы начинаем говорить о типах данных в Паскале. Тема эта очень обширна и я не хотел бы, чтобы мы с вами просто их перечислили и тут же забыли. Считаю, что без практики большой объём информации не усвоится. Поэтому, поговорим сегодня только о числовых типах данных. Остальные будем изучать, когда они нам понадобятся на практике при написании программ.
Любая программа так или иначе обрабатывает какие-то данные, их необходимо где-то хранить.
Забегая наперёд, и сама программа в момент её запуска, и все нужные ей данные, сохраняются в оперативной памяти компьютера, или попросту — в оперативке, о чём я говорил на первом уроке.
Оперативная память состоит из отдельных ячеек и каждая такая ячейка памяти может хранить один байт информации. Все они имеют уникальные адреса. И чем больше в вашем компьютере оперативки, тем эти адреса длиннее. Чтобы программистам не приходилось иметь дело с этими адресами, чтобы не надо было как-то выяснять, какие из имеющихся ячеек уже заняты, а какие свободны, во многих, если не во всех языках программирования (по крайней мере, в языках высокого уровня) с этой целью реализованы механизмы работы с переменными.
Информатика 8 класс: Типы переменных в языке Паскаль
Для хранения данных того или иного типа требуется разное количество ячеек памяти — разное количество байт. Вместо того, чтобы запоминать адрес каждой такой ячейки (вообще говоря, они могут располагаться очень далеко друг от друга), мы объявляем переменную — придумываем удобное имя, с помощью которого сможем обращаться к хранимым данным. Это то, что роднит высокоуровневые языки программирования. Но сам механизм переменных реализовывают очень по-разному.
Есть языки, где достаточно лишь объявить переменную и присвоить ей то или иное значение. Есть и такие, где объявление вовсе не обязательно. Тип данных, равно как и количество байт — ячеек памяти, будет вычислено исходя из присвоенных значений, так сказать, из контекста. Вместе с тем, присваивая в эту же переменную другое значение, программист явно или нет, может изменить и тип этой переменной.
В Паскале всё происходит иначе. В нём, объявляя переменную, мы обязаны сразу указать её тип. По ходу выполнения программы мы сможем менять значения наших переменных, но всегда только в пределах заданного типа. Из-за этого Паскаль называют языком с жёсткой типизацией.
Числовые типы данных Паскаля можно было бы поделить на два основных вида: целочисленные и работающие с дробными значениями. Разумеется, в каждом из них жёстко прописано — сколько отводится байт для хранения данных каждого типа. Этим же обусловлено, в каких диапазонах могут меняться значения переменных, а также точность представления действительных чисел. Обо всём по порядку.
Приведу таблицу с характеристиками целочисленных типов данных. Да, их несколько.
Integer | 2 | -32 768 .. +32 767 |
Word | 2 | 0 .. 65 535 |
Byte | 1 | 0 .. 255 |
Shortint | 1 | -128 .. +127 |
Longint | 4 | -2 147 483 648 .. +2 147 483 647 |
Самым часто используемым является — Integer, на хранение данных такого типа отводятся два байта и диапазон значений чисел этого типа лежит от −32 768 до 32 767 со знаком плюс. Для большинства типовых учебных задач его хватает. Однако бывает так, что нам не нужны, например, отрицательные числа или не требуется такого разброса значений. А бывает и наоборот, обычного интеджера становится недостаточно и тогда используют Longint. Какой тип данных использовать, следует решать в каждой конкретной задаче.
Для объявления переменных в программах на Паскале отведено конкретное место. Со временем, когда мы изучим и другие механизмы языка, то более детально определим это место, а сейчас следует помнить, что раздел с переменными размещают перед главным бегином программы. Позже (не на этом уроке), мы поговорим об областях видимости переменных, пока же все наши переменные будут глобальными и раздел с ними начинается с ключевого слова «var» от английского «variable» — переменная, изменяемая. Это ключевое слово записывается один раз и следом за ним идут все необходимые нам в программе переменные. Их описывают просто:
имя_переменной: Тип_данных;
На имена переменных налагаются те же ограничения, что и на прочие идентификаторы языка — русские буквы и пробелы исключены. Имя не может начинаться с цифры. После имени переменной необходимо поставить двоеточие «:» и затем указать тип данных, например, Integer. Закончить объявление переменной надо точкой с запятой «;» как и любой оператор.
Если нам нужны несколько переменных одного типа, их имена можно указать через запятую.
Я очень не люблю давать переменным короткие, ничего не значащие имена, вроде букв латинского алфавита. Да, такие имена переменных исторически появились первыми, да, они обусловлены малым количеством оперативки в компьютерах — не будем забывать, Паскалю уже более 50 лет, но сегодня подобные имена — неразумная экономия. Гораздо удобнее, когда уже из самого имени переменной вам станет ясно, какие данные в ней задумал хранить автор программы.
Однако на этом уроке и исключительно для краткости изложения, я буду называть переменные коротко, ровно так, как обычно не поступаю. Итак, запускаем PascalABC и в окне пишем такую программу:
program TypesVariablesOperations; var a, b: Integer; BEGIN a := 5; b := 2; writeln( a + b ); readln; END.
Имя программе задано произвольно и из него ясно, что мы сегодня говорим о типах данных, переменных и операциях (имеются в виду арифметические операции над числами). Итак, перед главным бегином программы я разместил раздел с переменными, которые для краткости обозвал «a» и «b». Это переменные целого типа Integer.
Обычно имена переменных я начинаю со строчных букв, а названия типов данных записываю с прописной.
Далее в самой программе расположены два оператора присваивания — знак «:=» – двоеточие, равно без пробелов между ними. С его помощью в переменную a я поместил целое число пять, а в b — двойку. Каждый оператор, само собой, заканчивается точкой с запятой. С процедурой writeln вы уже знакомы. С её помощью мы выведем на экран сумму чисел, которые сохранили в переменных.
Запустите программу любым способом — (F9 или Ctrl + F9) и посмотрите на результат. Очевидно — семь.
Однако, покамест, мы лишь поместили в переменные по одному числу, а сумму и вовсе не сохраняя в переменную, просто вывели на экран. Механизм работы переменных и весь их смысл заключён в том, чтобы менять их значения по ходу программы. Давайте после первых двух строк запишем ещё одну:
a := a — b;
А в процедуру writeln передадим в качестве аргумента не сумму переменных, а только нашу переменную a. Если ещё не ясно, программа примет следующий вид:
program TypesVariablesOperations; var a, b: Integer; BEGIN a := 5; b := 2; a := a – b; writeln( a ); readln; END.
Запустите программу. Результат — три. Что же произошло? Как следует понимать третью строку программы?
В правой части оператора написано a−b, исходя из помещённых в наши переменные значений, результат 5−2 действительно равен трём. А весь оператор следует понимать так: вычитаем значение переменной b из значения переменной a, и затем уже присваиваем новое значение в переменную a. Вообще, слева в операторе присваивания могла стоять любая целочисленная переменная, куда бы мог быть записан наш результат. Другое дело, что чаще всего используется тот же тип данных, что и в складываемых или вычитаемых переменных.
Очевидно, что кроме суммы «+» и разности «−», есть ещё умножение «*» и деление «/». Однако с делением не всё так гладко. Если мы скроем третью строчку программы — закомментируем её, а в процедуру writeln передадим в качестве аргумента «a / b», то процедура, положим, разберётся, что надо делать и выдаст нам результат, равный 2.5 — смотрите листинг 3.
program TypesVariablesOperations; var a, b: Integer; BEGIN a := 5; b := 2; //a := a – b; writeln( a / b ); readln; END.
В Паскале, как и в большинстве других языков программирования, разделителем целой и дробной части чисел служит точка, а не запятая. Просто запомните этот факт.
Если же мы раскомментируем третью строку и попробуем в переменную a поместить результат деления a на b, то мы получим ошибку при выполнении нашей программы. Почему? — Правильно, нельзя дробное число поместить в переменную целого типа. И даже если бы мы с вами делили, скажем, четыре на два, то и тогда результат нужно было бы сохранять в переменную дробного типа.
Почему? — Да потому что в общем случае результат деления — число дробное. Так мы плавно добрались до дробных типов данных в Паскале. Или, говоря более академично, до типов с плавающей запятой. Их тоже несколько, привожу таблицу.
Real | 6 | 2.9 x 10 -39 .. 1.7 x 10 38 |
Single | 4 | 1.5 x 10 -45 .. 3.4 x 10 38 |
Double | 8 | 5 x 10 -324 .. 1.7 x 10 308 |
Extended | 10 | 3.4 x 10 -4932 .. 1.1 x 10 4932 |
Диапазоны чисел в этой таблице просто космические. Вместе с тем, такое представление чисел не всегда точное. К выбору дробных типов данных (типов с плавающей запятой) следует подходить ещё более аккуратно, чем к целочисленным. Однако зачастую выбирают тип Real — действительные числа. Шести байт, выделяемых для хранения данных в этом типе с лихвой хватает для большинства задач.
Если мы теперь объявим переменную этого типа и результат деления a на b поместим в неё (листинг 4) Паскаль ругаться не станет.
program TypesVariablesOperations; var a, b: Integer; r: Real; BEGIN a := 5; b := 2; r := a / b; writeln( r ); readln; END.
Чаще остальных типов в программах на Паскале применяют Integer и Real. Их хватает для большинства типовых задач.
С результатом деления как с потенциально дробным числом, которое следует сохранять в дробных переменных, мы разобрались. Добавлю, однако, что в переменные типа Real можно запросто помещать и целые числа. К ошибке это не приведёт. Более того, умненький PascalABC даже не поставит в таком числе точку — разделитель целой и дробной части.
Если вы сохраните в нашей переменной r число пять и выведете его на экран, то среда разработки выведет «5», а не «5.0», что с формальной точки зрения было бы правильнее. Мы к этому ещё вернёмся, когда будем говорить о приведении типов в Паскале.
Раз уж в нашем уроке речь идёт не только о числовых типах данных и переменных, но и об арифметических действиях, следует помнить об их приоритетах. Умножение и деление имеют больший приоритет, чем вычитание и сложение. В примере 2 + 2 * 2 результатом будет — шесть, так как сначала выполнится именно умножение. Если вам нужен иной результат — используйте скобки. Так, например: (2 + 2) * 2 — получится 8.
Здесь самое место упомянуть о таких арифметических операциях как целочисленное деление и взятие остатка от целочисленного деления. Отдельно также стоят возведение в квадрат и взятие квадратного корня из числа. А операции возведения произвольного числа в произвольную (даже отрицательную, даже дробную) степень и вовсе не было в старых средах разработки. Поэтому все эти тонкости мы будем затрагивать на будущих уроках, а сегодня на этом всё.
Нет, не всё, есть ещё видеоролик.
Источник: www.vsmirnov.ru
Понятие переменной в программировании. Виды и типы переменных в разных языках программирования.
Существует довольно много различных языков программирования, но не один из них не обходится без переменных. Умение пользоваться переменными очень важно, так как без этого вы не сможете написать даже простейшую программу. Из этой работы вы узнаете, что же такое переменная и как ей пользоваться. Рассмотрим типы и виды переменных в различных популярных языках программирования, а также стековые переменные и использование стеков, структуры данных, которая упрощает работу с программой.
1. Что такое переменная
Переменная в программировании (Variable) — поименованная, либо адресуемая иным способом область памяти, адрес которой можно использовать для осуществления доступа к данным, находящиеся в переменной, называются значением этой переменной. В некоторых языках переменная определяется как имя, с которым может быть связано значение, или даже как место для хранения значения.
В программировании переменная является идентификатором, указывающим на область памяти с хранящимися там данными. Переменная задается уникальным именем и должна иметь тип, определяющий множество принимаемых ею допустимых значений. Перед любым обращением к переменной ее необходимо явно проинициализировать.
Переменная — это своего рода емкость для хранения данных. Когда информация записана в переменной (или по-другому, когда переменной присвоено значение), тогда эту информацию можно изменять, выводить в окне Web-браузера, посылать по электронной почте и т.д.
- в ней можно хранить информацию;
- можно из неё извлекать информацию, что не повлияет на значение самой переменной;
- в неё можно записать новые данные.
Причем, эти действия можно выполнять практически сколько угодно раз. По самому названию ясно, что переменная – вещь непостоянная. К примеру, в языке программирования PHP переменные содержат в себе значение или существуют исключительно во время работы скрипта. Как только завершается исполнение скрипта, так и существование переменных прекращается.
То есть при переходе с одной страницы web-сайта на другую, переменных и их значений прежней страницы уже нет. Это кроме случаев, когда нужные значения специально передаются другой странице.
Переменные появились вместе с первыми языками программирования. Результат работы любой программы сводится к выполнению действий над какими-либо данными. Напомним, что память (memory) – это последовательность байтов (byte), каждый из которых принимает значения от 0 до 255.
Так как байтов неимоверно много, единственный способ различать их — это присвоение каждому из них порядкового номера. Так и есть. Каждый байт оперативной памяти доступен процессору через его порядковый номер. Этот порядковый номер называется адресом байта.
Во времена, когда программы писались на машинном коде, программист должен был запоминать в какой участок памяти он записал нужное значение. Представьте, как усложнялся процесс написания программы, когда возникала необходимость работы с несколькими значениями. Адрес байта памяти есть число, которое мало о чем говорит. Большой объем памяти создает трудности программисту.
С первыми языками программирования появилась полезная возможность связывания определенного участка оперативной памяти с символьным названием (набором символов). По сравнению с адресом название переменной может отражать содержимое этого участка памяти. Но имя переменной не единственная вещь, которая определяет переменную.
Процессор может обрабатывать три вида данных: байт, слово и двойное слово. (?) (Термины «слово» и «двойное слово» здесь используются в узкоспециальном смысле, отражая собой размер участка памяти, выделенного под переменную.) Поэтому определение вида переменной в языках нижнего и среднего уровней происходит обычно указанием типа переменной. Эти два свойства переменной (название и тип) определяют нужный участок памяти и способ его использования. В большинстве случаев именно тип переменной определяет сколько байтов памяти захватит переменная. Например, переменной типа BYTE присвоено имя A. Процессор по названию переменной (А) определяет её место в памяти и при извлечении значения этой переменной воспользуется командой, предназначенной для извлечения байта (не слова и не двойного слова).
В общем случае, переменная – это поименованный участок оперативной памяти, используемый для временного хранения данных. В зависимости от языка программирования, объявление переменной может сопровождаться указанием его типа. Обычно в языках высокого уровня тип не указывается. Синтаксические различия между языками проявляются как раз в объявлении переменных. В C и C++ необходимо указывать тип, в PHP используется префикс $.
Прежде, чем использовать переменную, мы должны придумать ей имя и объявить ее.
Вот некоторые требования к имени переменной:
- Переменная может содержать лишь прописные, заглавные буквы латинского алфавита, цифры и знак подчеркивания: _. Все остальные знаки препинания, включая пробел — запрещены.
- Имя переменной не может начинаться с цифры.
- Имя переменной чувствительно к регистру. И поэтому: name, Name, nAme, naMe и т. д. будут расценены программой, как не одна, а несколько переменных.
- Они не могут писаться так же, как зарезервированные слова языка С++: and, and_eq, asm, auto, bitand, bitor, bool, break, case,catch, char, class,compl, const, const_cast, continue, default, delete, do, double, dynamic_cast, else, enum, explicit, export, extern, false, float, for, friend, goto, if, inline, int, long, mutable, namespace, new, not, not_eq, operator, or, or_eq, private, protected, public, register, reinterpret_cast, return, short, signed, sizeof, static, static_cast, struct, switch, template, this, throw, true, try, typedef, typeid, typename, union, unsigned, using, virtual, void, volatile, wchar_t, while, xor, xor_eq.
В современном мире программирования программист должен знать не только имя и тип переменной. Также существуют понятия пространства имен и область действия переменной. Представьте, что создается программа, в которой используются несколько переменных. Имена этих переменных составляют список, который определяет пространство имен.
Представим, что в ходе создания программы мы, по ошибке, объявили две переменные с одинаковыми названиями. При попытке запуска программы его компилятор сообщит об этой ошибке. Это было бы невозможно, если бы компилятор не контролировал переменные.
То есть, контроль безупречности пространства имен возлагается от программиста на компилятор, что облегчает процесс создания и отладки программы. На практике, приведенный пример не во всех языках приводит к ошибке. Каждый компилятор (или интерпретатор) имеют собственные требования к пространству имен. То, что является ошибкой в одном языке (в данном случае C или C++), в других языках ошибкой может не быть.
Если раньше программы были небольшие и их исходный код располагался в одном файле, то сейчас текст кода может состоять из нескольких файлов. И запомнить уникальное имя каждой переменной, использующейся в программе, становится практически невозможным. Поэтому (и не только) было введено понятие области действия (или области существования) переменных.
Область действия – понятие абстрактное. Это понятие применяется только в языках среднего и высокого уровней. Целью применения области действия является разделение пространства имен на несколько независимых частей. Так в программе могут существовать несколько переменных с одинаковыми именами и типами, не мешаю друг другу.
Начинающему идея разделения области действия в пределах отдельных файлов исходного кода программы должна быть более понятна. Например, этот подход используется в PHP. Это означает, что переменная, объявленная в одном файле, может быть абсолютно недоступна в других файлах. Например, мы можем объявить переменную с именем «VarX» в нескольких файлах проекта, и это не будет ошибкой.
Таким образом, переменная в программировании обладает следующими характеристиками:
- имя
- адрес
- тип
- размер, который обычно определятся типом
- принадлежность какому-либо пространству имен
- область действия
2. Типы переменных
Тип переменной определяет набор значений для данной переменной, размер и операции, которые могут над ней выполняться. Рассмотрим типы переменных в различных языках программирования.
Источник: www.evkova.org
Урок 5
Переменная: тип, имя, значение
В языках Visual Basic и Gambas и в языке OpenOffice.org Basic переменные используются для хранения и обработки данных в программах.
Переменная задается именем, определяющим область оперативной памяти компьютера, в которых хранится значение переменной. Значениями переменных могут быть данные различных типов (целые или вещественные числа, последовательности символов, логические значения и т. д.).
Переменная в программе представлена именем и служит для обращения к данным определенного типа, конкретное значение которых хранится в ячейке оперативной памяти.
Тип переменной. Тип переменной определяется типом данных, которые могут быть значениями переменной. Значениями переменных числовых типов Byte, Short, Integer, Long, Single, Double являются числа, логического типа Boolean — значения «истина» (True) или «ложь» (False), строкового типа String — последовательности символов. Обозначения типов переменных являются ключевыми словами языка и поэтому выделяются.
Данные различных типов требуют для своего хранения в оперативной памяти компьютера различное количество ячеек (байтов) (табл. 1.3).
Таблица 1.3. Типы переменных
Имя переменной. Имя переменной определяет область оперативной памяти компьютера, в которых хранится значение переменных. Имя каждой переменной (идентификатор) уникально и не может меняться в процессе выполнения программы. В рассматриваемых языках имя переменной может состоять из различных символов (латинские и русские буквы, цифры и т. д.), но должно обязательно начинаться с буквы и не должно включать знак точка «.». Количество символов в имени не может быть более 1023, однако для удобства обычно ограничиваются несколькими символами.
Объявление переменных. Необходимо объявлять переменные, для того чтобы исполнитель программы (компьютер) «понимал», переменные какого типа используются в программе.
Для объявления переменной используется оператор объявления переменных Dim. С помощью одного оператора можно объявить сразу несколько переменных, например:
Dim A As Byte, В As Short, С As Single, D As String, E As Boolean
Присваивание переменным значений. Задать или изменить значение переменной можно с помощью оператора присваивания. При выполнении оператора присваивания переменная, имя которой указано слева от знака равенства, получает значение, которое находится справа от знака равенства. Например:
А = 255
В = -32768
С = 3.14
D = «информатика»
Е = True
Значение переменной может быть задано числом, строкой или логическим значением, а также может быть представлено с помощью арифметического, строкового или логического выражения.
Проанализируем процесс выполнения программы компьютером (для определенности записанной на языке Visual Basic). После запуска проекта оператор объявления переменных Dim отведет в оперативной памяти для их хранения необходимое количество ячеек (табл. 1.4):
• для целой неотрицательной переменной А одну ячейку;
• для целочисленной переменной В две ячейки;
• для переменной одинарной точности С четыре ячейки;
• для строковой переменной D по две ячейки на символ;
• для логической переменной Е две ячейки.
Таблица 1.4. Значения переменных в оперативной памяти
Таким образом, в памяти для хранения значений переменных будет отведена 31 ячейка, например ячейки с 1-й по 31-ю.
Контрольные вопросы
1. В чем состоит разница между типом, именем и значением переменной?
2. Какие основные типы переменных используются в языке программирования Visual Basic? Gambas? OpenOffice.org Basic?
3. Почему рекомендуется объявлять переменные перед их использованием в программе?
Задания для самостоятельного выполнения
1.5. Задание с кратким ответом. Назовите количество ячеек оперативной памяти, необходимое для хранения значений переменных первых семи типов языка OpenOffice.org Basic, перечисленных в табл. 1.3.
Cкачать материалы урока
Источник: xn—-7sbbfb7a7aej.xn--p1ai