Что такое const в паскале
Pascal: Занятие №1. Часть 3: Типы данных в Паскаль
Типы данных в Паскале
Паскаль — это типизированный язык программирования. Это означает, что переменные, в которых хранятся данные, имеют определенный тип данных. Т.е. программе напрямую надо указать, какие данные могут храниться в той или иной переменной: текстовые данные, числовые данные, если числовые — то целочисленные или дробные, и т.п. Это необходимо в первую очередь для того чтобы компьютер «знал», какие операции можно выполнять с этими переменными и как правильно их выполнять.
Например, сложение текстовых данных, или как это правильно называется в программировании — конкатенация — это обычное слияние строк, тогда как сложение числовых данных происходит поразрядно, кроме того, дробные и целые числа складываются тоже по-разному. То же самое касается и других операций.
Рассмотрим наиболее распространенные в Pascal типы данных.
Целочисленные типы данных в Паскаль
Тип | Диапазон | Требуемая память (байт) |
byte | 0..255 | 1 |
shortint | -128..127 | 1 |
integer | -32768.. 32767 | 2 |
word | 0..65535 | 2 |
longint | -2147483648..2147483647 | 4 |
Нужно иметь в виду, что при написании программ в паскале integer (в переводе с англ. целое) является наиболее часто используемым, так как диапазон значений наиболее востребуем. Если необходим более широкий диапазон, используется longint (long integer, в переводе с англ. длинное целое). Тип byte в Паскале используется, когда нет необходимости работать с отрицательными значениями, то же самое касается и типа word (только диапазон значений здесь значительно больше).
Примеры того, как описываются (объявляются) переменные в Паскале:
Pascal | PascalABC.NET | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Pascal | PascalABC.NET | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ДЕЙСТВИЕ | РЕЗУЛЬТАТ | СМЫСЛ |
---|---|---|
2 + 3 | 5 | плюс |
4 — 1 | 3 | минус |
2 * 3 | 6 | умножить |
17 div 5 | 3 | целочисленное деление |
17 mod 5 | 2 | остаток от целочисленного деления |
Порядок выполнения операций
var a: integer; b: real; begin a := 1; writeln(‘a := 1; a = ‘,a); a += 2; // Увеличение на 2 writeln(‘a += 2; a = ‘,a); a *= 3; // Умножение на 3 writeln(‘a *= 3; a = ‘,a); writeln; b := 6; writeln(‘b := 6; b = ‘,b); r /= 2; writeln(‘b /= 2; b = ‘,b); end.
Стандартные арифметические процедуры и функции Pascal
Здесь стоит более подробно остановиться на некоторых арифметических операциях.
Пример операции inc:
Более сложное использование процедуры inc:
Inc(x,n) где x — порядкового типа, n — целого типа; процедура inc увеличивает x на n.
Пример использования функции odd:
begin WriteLn(Odd(5));
Пример использования процедуры sqr в Pascal:
var x:integer; begin x:=3; writeln(sqr(x)); <ответ 9>end.
Однако в компиляторе pascal abc возведение в степень осуществляется значительно проще:
Пример использования процедуры sqrt в Pascal:
var x:integer; begin x:=9; writeln(sqrt(x)); <ответ 3>end.
То, что вы не знали о константах
1. Виды констант
В Lazarus/FreePascal константы бывают следующих видов:
2. Объявление констант
FreePascal, как и Турбо Паскаль, поддерживает обычные и типизированные константы. Константы объявляются в разделе констант, в блоке объявления модуля, программы или класса, функции или процедуры.
3. Обычные константы
Объявления обычных констант создаются с использованием имени идентификатора, за которым следует знак “=”, а затем необязательное выражение, состоящее из допустимых комбинаций чисел, символов, логических значений или перечисляемых значений. Примерно так:
const Идентификатор = Выражение ДирективаПодсказки;
То есть вместо обычного числа или выражения можно использовать константу, и две процедуры WriteLn в примере выше выведут одинаковое число.
Компилятор должен иметь возможность вычислять выражение в объявлении константы во время компиляции. Это означает, что большинство функций библиотеки времени выполнения нельзя использовать в объявлении константы.
Что такое ДирективаПодсказки сегодня рассказывать не буду, потому как непосредственно к константам она отношения не имеет. Но обязательно расскажу в следующий раз.
В Паскале могут быть объявлены только константы следующих типов:
Следующие примеры являются правильными объявлениями констант:
Присваивание значения обычной константе не допускается. Таким образом, учитывая предыдущее объявление, следующий код приведет к ошибке компилятора:
Кроме того, для строковых констант тип строки зависит от некоторых параметров компилятора. Если требуется определенный тип, следует использовать типизированную константу, как описано в следующем разделе.
4. Типизированные константы
Иногда необходимо указать тип константы, например для констант сложных (комплексных) структур, или когда значение константы надо изменить во время выполнения программы. Типизированные константы можно использовать для хранения массивов, записей, процедур.
Определение типизированных констант довольно простое:
const Идентификатор : Тип = Значение;
const TC : WORD = 200; //Типизированная константа
А потом в программе можно сделать так:
То есть в отличие от обычных констант, типизированным константам может быть присвоено значение во время выполнения. Это старая концепция Turbo Pascal, которая в Lazarus/FreePascal была заменена поддержкой инициализированных переменных.
Поддержка присваивания значений типизированным константам управляется директивой <$J>, то есть она (поддержка) может быть отключена. Однако она включена по умолчанию (для совместимости с Turbo Pascal). Инициализированные переменные всегда разрешены.
ПРИМЕЧАНИЕ: Следует подчеркнуть, что типизированные константы инициализируются автоматически при запуске программы. Это также верно для локальных типизированных констант и инициализированных переменных. Локальные типизированные константы также инициализируются при запуске программы. Если их значение было изменено во время предыдущих вызовов функции, они сохранят измененное значение, то есть они не инициализируются при каждом вызове функции.
ВАЖНО!
Типизированные константы, в отличие от инициализированных переменных, можно объявлять локально в подпрограммах. Пример:
4.1. Константы-массивы
Константу-массив можно объявить, заключив значения элементов массива в скобки и разделив их запятыми. Значениями элементов массива могут быть только константные выражения. Пример:
С одномерным массивом, думаю, вопросов не возникнет. А двумерный массив-константа, созданный в примере, будет содержать такие значения:
Теперь и с этим, надеюсь, всё понятно.
4.2. Константы-записи
Чтобы определить константу-запись, надо определить значение каждого поля так:
Присваивания значений полям разделяются точками с запятой (;). Значения должны быть константными выражениями. Поля должны быть перечислены в том же порядке, в каком они следуют в объявлении записи. Значение для поля-тэга (если такое присутствует) должно быть установлено. Если запись имеет вариантную часть, то значение может быть установлено только для варианта, определенного полем-тэгом.
4.3. Процедурные константы
Процедурная константа должна содержать идентификатор процедуры или функции, который совместим с типом константы. Пример:
Теперь вы можете использовать процедурную константу MyFunction в программе вместо функции MyFunc :
ВНИМАНИЕ!
Описанный выше пример будет работать только в режиме совместимости с Делфи, установить который можно с помощью соответствующей директивы.
5. Строковые ресурсы
Ниже приведен пример определения строковых ресурсов:
Семантически строки действуют как обычные константы. Этим строкам не разрешается присваивать значения (за исключением специальных механизмов модуля objpas ). Однако они могут использоваться в присваивании или выражениях как обычные строковые константы. Основное использование раздела resourcestring заключается в обеспечении простых средств интернационализации.
ПРИМЕЧАНИЕ: обратите внимание, что строка ресурса, которая задана как выражение, не изменится, если части выражения будут изменены:
ПРИМЕЧАНИЕ: аналогично, при использовании строк ресурсов в массиве констант, в массиве будут использоваться только начальные значения строк ресурсов: при переводе отдельных констант элементы в массиве сохранят свое исходное значение.
Ну вот как-то так. Однако, такая простая вещь, как константы, в руках профессионала может оказаться очень даже не простой.
Учитель информатики
Сайт учителя информатики. Технологические карты уроков, Подготовка к ОГЭ и ЕГЭ, полезный материал и многое другое.
Уроки Паскаль № 3 Константы и ввод данных
Здравствуйте, в этом уроке мы продолжаем изучать язык программирования Паскаль.
Уроки Паскаль № 3 мы поговорим что такое константы и ввод данных.
Урок № 3 Константы и ввод данных
Сразу создайте заготовку, в которой мы будем работать с константами. Только не подсматривайте написать её нужно из памяти.
Как только заготовка готова пропишем несколько переменных.
Program Constants;
var
a, b: integer;
begin
Теперь создадим константу. Что такое константа? Это похожее на переменную, но отличающее от неё тем что значение константы мы задаем сразу при описании и менять значение в процессе работы программы никак нельзя. В этом основное отличие. Почему переменная от слова «менять» потому что значение может меняться. Мы можем записывать новое значение переменной, а константа остается постоянной на протяжении всей работы программы.
Константа записывается так:
const
PI = 3.14;
H = ‘привет!’;
Это сделано что бы не путать переменные с константами в процессе работы программы. Когда программа маленькая отличить их просто, а если программа большая, то это становится проблематично.
Давайте что-нибудь сделаем с этими значениями. Наша программа выглядит так.
Выведем константу H на экран. Для это пишем оператор writeln(H);
Теперь изучим кое-что интересное. Это ввод значения. Мы можем выводить на экран значения, а как сделать так что бы человек мог ввести свое значение для этого используется оператор readln(); и здесь мы записываем какую-нибудь переменную.
Давайте создадим переменную типа string; в которой будем записывать имя пользователя. Которое у него будем спрашивать, назовем её так name: string ;
Выведем сообщение, пользователю которое даст ему понять, что мы этого хотим.
writeln(‘Введите здесь своё имя: ‘);
и в оператор readln(); запишем переменную name выглядеть это будет вот так.
readln(name);
После ввода пользователя имени мы выведем его имя на экран и добавим сообщение к его имени.
writeln(H, name);
После всех изменений наша программа будет выглядеть так:
program Constants;
const
PI = 3.14;
H = ‘Привет!’;
var
a, b: integer;
name: string;
begin
writeln(‘Введите здесь своё имя: ‘);
readln(name);
writeln(H, name);
После исполнения мы получим следующий результат.
Так же от пользователя мы можем принимать не только строки, но и числа.
У нас есть переменные a, b: integer; давайте сделаем простой калькулятор, который будет складывать два числа.
Вводим такие данные в конце программы
writeln(‘Введите значение а: ‘);
readln(a);
writeln(‘Введите значение b: ‘);
readln(b);
writeln(‘Сумма a + b = ‘, a+b);
Такой вот простейший калькулятор у нас получился.
Давайте уберем часть строк вот эти.
writeln(‘Введите здесь своё имя: ‘);
readln(name);
writeln(H,’ ‘, name, ‘.’);
Ошибка выводится потому что мы попытались в целочисленную переменную integer записать не целое число 3.14 поэтому в таких вещах когда вы будете писать свою программу в которой будет использоваться ввод данных от пользователя и вы не будете уверенны что пользователь введет целое число обязательное нужно использовать вещественный тип real
Заменим строку a, b: integer; на
a, b: real; программа будет выглядеть так:
program Constants;
const
PI = 3.14;
H = ‘Привет!’;
var
a, b: real;
name: string;
begin
writeln(‘Введите значение а: ‘);
readln(a);
writeln(‘Введите значение b: ‘);
readln(b);
writeln(‘Сумма a + b = ‘, a+b);
end.
И вот результат исполнения программы.
На этом надо заканчивать урок, сегодня мы познакомились с элементом типа string строковыми, с переменной типа real вещественными. С переменными пока закончим мы их естественно будем использовать в будущих уроках. В последующих уроках мы познакомимся с более сложными элементами такими как ветвление, циклы.
Урок 1 — Переменные и константы. Первая программа
В этом уроке рассмотрим:
Разделы справочной информации внимательно читать не обязательно, к ним стоит обращаться по мере необходимости.
1 Структура программы на Паскаль
PROGRAM имя программы;
(английскими буквами, одно слово. Хотите глубже? То необходимо воспользоваться правилами написания идентификаторов )
USES подключаемые библиотеки (модули);
(дополнительные возможности, их можно подключать к программе в этой строке)
LABEL список меток;
(из одного места программы «прыгать» в другое)
CONST раздел описания констант;
(постоянные величины, их нельзя изменять)
TYPE описание типов переменных;
VAR определение глобальных переменных;
(описание всех переменных величин, которые в программе могут изменяться)
основной блок программы
Разумеется, что не все приведенные выше блоки обязательны для использования. Сейчас приведем тот минимум, который необходимо использовать.
Данная программа ни чего не делает, так как в ней нет ни одного оператора.
2 Пример программы на Pascal
Результатом данный программы будет вывод на экран строки «Hello, World!».
Запустите Turbo Pascal и перепишите исходный код программы. Теперь запустите программу, это можно сделать зажав сочетание клавиш Ctrl+F9. Результат выполнения программы всегда можно посмотреть зажав сочетание клавиш Alt+F5.
3 Константы и переменные. Примеры
Переменные в Pascal, служат для хранения некоторых величин. Переменные тождественны идентификаторам, т.е. для того, чтобы в программе объявить переменную необходимо назвать ее.
3.1 Константы
Те переменные, которые не изменяются, называются константами. Различают следующие типы констант:
‘Pascal programming language’
Рассмотрим программу «Hello world!» с использованием константы.
В данном случае мы объявили константу hello равную значению ‘Привет, ‘. Далее в программе достаточно в нужном месте подставить эту константу. Теперь если нам вдруг понадобиться вместо программы, которая здоровается, сделать программу, которая прощается, достаточно в начале программы поменять «Привет, » на «До свидания, » и программа будет прощаться с пользователем.
Если Вы обратили внимание, то в примере у константы не указан явно не указан тип, такие константы называются Обычными константами. Тип обычных констант определяется по их значению.
Помимо обычных констант существуют Типизированные константы. Тип таких констант объявляется явно:
Дополнительно хочется обратить внимание на апострафы в константах. Если Вам в константе понадобится использовать апострофы, то просто продублируйте их:
3.2 Переменные в Pascal
Для хранения данных, полученных от пользователя, в программе вводятся переменные. К примеру для того, чтобы передать программе имя какого-то человека нам нужно в коде программы записать строчку:
Хочу обратить Ваше внимание на тот факт, что все идентификаторы(переменные, название программы) в коде Turbo Pascal могут состоять исключительно из символов латинского алфавита (A-Z, a-z), цифр (0-9) и символа нижнего подчеркивания («_»). Также идентификаторы не должны начинаться с цифр.
Теперь попробуем объявить несколько переменных разного типа. Допустим мы хотим знать имя пользователя, его возраст и его рост. Для этого возьмем код программы их первого примера и изменить в соответствии с новыми требованиями.
Хочу обратить ваше внимание на 5 строчку кода. Когда у нас есть несколько переменных одного типа, мы можем объявить их в одной строке, описав их через запятую и после последнего поставить знак двоеточия и написать требуемый тип.
4 Справочная информация по типам данных
Типы данных в Паскале определяют возможные значения переменных, констант, выражений и функций. Они бывают встроенными и пользовательскими. Встроенные типы изначально присутствуют в языке программирования, а пользовательские создаются программистом.
По способу представления и обработки типы данных бывают:
В этой статье будут рассмотрены лишь, наиболее простые типы данных, так как на начальных этапах обучения, вашей программе будет проще обойтись, например, без файлов и записей, чем без целочисленных или строковых переменных.
4.1 Целочисленный тип
Сюда входят несколько целочисленных типов, которые различаются диапазоном значений, количеством байт отведённых для их хранения и словом, с помощью которого объявляется тип.
Тип | Диапазон | Размер в байтах |
shortint | -128…127 | 1 |
integer | -32 768…32 767 | 2 |
longint | -2 147 483 648…2 147 483 647 | 4 |
byte | 0…255 | 1 |
word | 0…65 535 | 2 |
Объявить целочисленную переменную можно в разделе Var, например:
Var book: word;
Над переменными этой категории можно выполнять все арифметические и логические операции за исключением деления ( / ), для него нужен вещественный тип. Также могут быть применены некоторые стандартные функции и процедуры.
4.2 Вещественный тип
В Паскале бывают следующие вещественные типы данных:
Тип | Диапазон | Память, байт | Количество цифр |
Real | 2.9e-39 … 1.7e38 | 6 | 11-12 |
Single | 1.5e-45 … 3.4e38 | 4 | 7-8 |
Double | 5.0e-324 …1.7e308 | 8 | 15-16 |
Extended | 3.4e-4932 … 1.1e493 | 10 | 19-20 |
Comp | -9.2e63 … (9.2e63)-1 | 8 | 19-20 |
Над ними может быть выполнено большее количество операций и функций, чем над целыми. Например, эти функции возвращают вещественный результат:
4.3 Логический тип
4.4 Символьный тип
Символьный тип данных – это совокупность символов, используемых в том или ином компьютере. Переменная данного типа принимает значение одного из этих символов, занимает в памяти компьютера 1 байт. Слово Char определяет величину данного типа. Существует несколько способов записать символьную переменную (или константу):
К величинам символьного типа данных применимы операции отношения и следующие функции:
4.5 Строковый тип
Перечисляемый тип данных представляет собой некоторое ограниченное количество идентификаторов. Эти идентификаторы заключаются в круглые скобки, и отделяются друг от друга запятыми. Пример:
Var A: (Monday, Tuesday);
4.6 Интервальный тип данных
Когда необходимо задать какой то диапазон значений, то в таких ситуациях применяется интервальный тип данных. Для объявления используется конструкция m..n, где m – минимальное (начальное) значение, а n – максимально (конечное); здесь m и n являются константами, которые могут быть целого, символьного, перечисляемого или логического типа. Описываться величины интервального типа могут как в разделе типов, так и в разделе описания переменных.
5 Pascal. Операторы ввода-вывода
5.1 Ввод данных
Процедура ввода данных с клавиатуры – Read (читать). Ее можно представить так:
Для перевода каретки после выполнения оператора Read на новую строку, следует прибавить окончание ln :
Также можно не указывать список ввода:
Программа не перейдет к выполнению следующей части до тез пор, пока не выполниться пустой оператор.
5.2 Вывод данных
Элементами списка вывода являются величины различных типов, в том числе выражения и строки, отделенные друг от друга запятыми, например:
Здесь x и y – параметры, заключенные в круглые скобки. Возможно использование оператора вывода и без параметров:
Недостаточно просто вывести значение на экран, нужно также сделать это как можно корректнее. Допустим нам нужно в одном операторе Write вывести значения нескольких переменных ( a=1, b=2, c=3 ). Пишем:
1) Вписать пробел вручную, например:
2) Воспользоваться возможностью форматированного вывода:
Двоеточие относиться к переменной, после которой оно следует, и говорит программе, что при выводе (переменной) нужно выделить место, заданное целым числом (в нашем случае это 2), т. е. под значения, хранящиеся в переменных b и c отводиться две клетки, сами они выведутся «прижатыми» к правому краю.
Процедура форматированного вывода может применяться и к другим типам данных, но особого внимания заслуживает вещественный тип. Как известно переменные вещественного типа имеют целую и дробную части, поэтому для них предусмотрена такая форма записи с использованием формата:
Результат выполнения: 32.101
Формат 5 означает, что всего под число 32.1012 выделено 5 клеток, а 2 – из этих пяти под дробную часть отводиться 2 клетки.
6 Выражения с тандартные функции
6.1 Стандартные функции Pascal
В программировании, довольно часто приходиться выполнять однотипные действия, причем в задачах разного уровня и класса. И для ускорения процесса написания кода эти действия выносят в специальные подпрограммы – стандартные функции. Обращение к такой подпрограмме происходит по ее имени, а в скобках указывается значение аргумента. В следующей таблице указаны те стандартные функции, которые используются в языке программирования Pascal.
Функция | Назначение |
ABS(x) | Вычисление абсолютного значения x: |х| |
SQR(x) | Вычисление квадрата x: x*x |
SIN(x) | Вычисление синуса x: sin x |
COS(x) | Вычисление косинуса x: cos x |
ARCTAN(x) | Вычисление арктангенса x: arctg x |
EXP(x) | Вычисление экспоненты (числа Е) в степени x |
EXP10(x) | Вычисление 10 в степени x |
LN(x) | Вычисление натурального логарифма x |
LOG(x) | Вычисление десятичного логарифма x |
SQRT(x) | Вычисление квадратного корня из x |
A DIV B | Вычисление частного при делении А на В с отбрасыванием остатка |
A MOD B | Нахождение остатка от делении А на В |
TRUNC(x) | Нахождение целой части x |
RANDOM(x) | Псевдослучайное число в интервале [0, x] |
ROUND(x) | Округление значения x в сторону ближайшего целого |
ODD(x) | Проверяет аргумент на нечетность. Результат TRUE, если аргумент нечетный, FALSE – если четный. |
ORD(x) | Возвращает порядковый номер аргумента и, как следствие, преобразует величину порядкового типа в величину целого типа. |
CHR(x) | Определение символа языка Паскаль по его порядковому номеру |
SUCC(x) | Нахождение элемента, идущего после данного в перечне допустимых элементов |
PRED(x) | Нахождение элемента, идущего перед данным в перечне допустимых элементов |
FRAC(X) | Возвращает дробную часть x |
INT(X) | Возвращает целую часть x |
Pi | Значение математической постоянной π |
EOF(x) | Возвращает TRUE, если файл находится в стоянии “конец файла”, иначе FALSE, если нет конца файла |
6.2 Выражения в Pascal
Выражение состоит из переменных, констант, полей в записях, указателей функций, круглых скобок и знаков операций. Для корректной записи выражений необходимо знать не только как обозначаются те или иные операции, функции и т. п., но также стоит предусмотреть приоритеты их выполнения, математические и логические правила, а также некоторые тонкости самого языка. Для более углубленного изучения выражений, стоит рассмотреть несколько примеров.
Как видите выражения в Pascal, имеют такой же приоритет, как и в математике, а с помощью круглых скобок его можно изменить.
Такое логическое выражение возвращает истину, лишь в том случае, когда истинны оба выражения, т. е. если a входит в диапазон от 1 до 20 включительно. Стоит обратить внимание на скобки, здесь они необходимы для изменения приоритета, так как у операторов сравнения он низший.
3) (a+3>0) and (a+3 1) and (b
Условие вернет истину, тогда когда истинными будут два условия слева или справа от OR, а также если они оба будут истинными.
Логическая операция OR (или) суть дизъюнкция в логики и поэтому имеет следующую таблицу истинности:
X | Y | X or Y |
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
Ложь имеет место только когда X и Y ложны (нули). В том случае, чтобы истина возвращалась только тогда, когда одно из условий верно следует применить оператор XOR (исключающее или):
(a+3>0) and (a+3 1) and (b
В Pascal нет функции возведения числа в степень (кроме степени 2), поэтому существует два пути:
1 — умножать число само на себя, какое то количество раз;
2 — воспользоваться функциями экспоненты и натурального логарифма.
В этом примере использованы оба варианта, но если степень, в которую необходимо возвести число, достаточно велика, то предпочтение следует отдать второму способу.
- Что такое const в математике
- Что такое const в химии