Как ввести константу в паскале с клавиатуры
Я уже не раз говорил о пользе применения констант, но решил посвятить этому вопросу отдельную статью, поскольку многие начинающие вообще не уделяют внимания константам - ну есть они и есть. А между тем.
1. Виды констант
В Lazarus/FreePascal константы бывают следующих видов:
- Обычные константы.
- Типизированные константы (не уверен, что начинающие программисты на Паскале об этом слышали, а вот для тех, кто начал с С/С++ - это самые что ни на есть обычные константы).
- Строка ресурса (а вот об этом, я почти уверен, вы даже и не слышали).
2. Объявление констант
FreePascal, как и Турбо Паскаль, поддерживает обычные и типизированные константы. Константы объявляются в разделе констант, в блоке объявления модуля, программы или класса, функции или процедуры.
Обратите внимание на то, что при объявлении констант (как и при объявлении других сущностей), имеет значение область видимости. Поэтому в описанном выше примере компилятор выдаст ошибку (Y - это локальная константа, которая видна только внутри процедуры MyProc, а в программе эту константу компилятор “не увидит”).
3. Обычные константы
Объявления обычных констант создаются с использованием имени идентификатора, за которым следует знак “=”, а затем необязательное выражение, состоящее из допустимых комбинаций чисел, символов, логических значений или перечисляемых значений. Примерно так:
const Идентификатор = Выражение ДирективаПодсказки;
То есть объявлению константы (или раздела констант) предшествует ключевое слово const . Затем идёт Идентификатор - имя константы. А затем - Выражение , которое связывается с указанным Идентификатором. Например:
const X = 100;
Здесь Х - это Идентификатор (имя константы), а 100 - это Выражение . И теперь можно использовать эту константу, например, так:
То есть вместо обычного числа или выражения можно использовать константу, и две процедуры WriteLn в примере выше выведут одинаковое число.
Компилятор должен иметь возможность вычислять выражение в объявлении константы во время компиляции. Это означает, что большинство функций библиотеки времени выполнения нельзя использовать в объявлении константы.
Операторы, такие как +, -, *, /, not, and, or, div, mod, ord, chr, sizeof, pi, int, trunc, round, frac, odd могут быть использованы.
А вообще Выражение - это может быть любое допустимое выражение в Паскале, с учётом того, что оно может быть вычислено во время компиляции. Например, такой код не прокатит:
Потому что выражение XX = X * X НЕВОЗМОЖНО вычислить во время компиляции, потому как константа Х у нас объявлена ПОСЛЕ константы ХХ .
Что такое ДирективаПодсказки сегодня рассказывать не буду, потому как непосредственно к константам она отношения не имеет. Но обязательно расскажу в следующий раз.
В Паскале могут быть объявлены только константы следующих типов:
Следующие примеры являются правильными объявлениями констант:
Присваивание значения обычной константе не допускается. Таким образом, учитывая предыдущее объявление, следующий код приведет к ошибке компилятора:
Кроме того, для строковых констант тип строки зависит от некоторых параметров компилятора. Если требуется определенный тип, следует использовать типизированную константу, как описано в следующем разделе.
4. Типизированные константы
Иногда необходимо указать тип константы, например для констант сложных (комплексных) структур, или когда значение константы надо изменить во время выполнения программы. Типизированные константы можно использовать для хранения массивов, записей, процедур.
Определение типизированных констант довольно простое:
const Идентификатор : Тип = Значение;
const TC : WORD = 200; //Типизированная константа
А потом в программе можно сделать так:
TC := 500; //Значение типизированной константы можно изменять !
То есть в отличие от обычных констант, типизированным константам может быть присвоено значение во время выполнения. Это старая концепция Turbo Pascal, которая в Lazarus/FreePascal была заменена поддержкой инициализированных переменных.
Поддержка присваивания значений типизированным константам управляется директивой , то есть она (поддержка) может быть отключена. Однако она включена по умолчанию (для совместимости с Turbo Pascal). Инициализированные переменные всегда разрешены.
ПРИМЕЧАНИЕ: Следует подчеркнуть, что типизированные константы инициализируются автоматически при запуске программы. Это также верно для локальных типизированных констант и инициализированных переменных. Локальные типизированные константы также инициализируются при запуске программы. Если их значение было изменено во время предыдущих вызовов функции, они сохранят измененное значение, то есть они не инициализируются при каждом вызове функции.
ВАЖНО!
Типизированные константы, в отличие от инициализированных переменных, можно объявлять локально в подпрограммах. Пример:
4.1. Константы-массивы
Константу-массив можно объявить, заключив значения элементов массива в скобки и разделив их запятыми. Значениями элементов массива могут быть только константные выражения. Пример:
С одномерным массивом, думаю, вопросов не возникнет. А двумерный массив-константа, созданный в примере, будет содержать такие значения:
Теперь и с этим, надеюсь, всё понятно.
4.2. Константы-записи
Чтобы определить константу-запись, надо определить значение каждого поля так:
Присваивания значений полям разделяются точками с запятой (;). Значения должны быть константными выражениями. Поля должны быть перечислены в том же порядке, в каком они следуют в объявлении записи. Значение для поля-тэга (если такое присутствует) должно быть установлено. Если запись имеет вариантную часть, то значение может быть установлено только для варианта, определенного полем-тэгом.
4.3. Процедурные константы
Процедурная константа должна содержать идентификатор процедуры или функции, который совместим с типом константы. Пример:
Теперь вы можете использовать процедурную константу MyFunction в программе вместо функции MyFunc :
WriteLn(MyFunction(5));
Зачем вообще нужны такие извращения? Поверьте на слово - иногда это удобно. Но это отдельная тема - как-нибудь расскажу подробнее.
ВНИМАНИЕ!
Описанный выше пример будет работать только в режиме совместимости с Делфи, установить который можно с помощью соответствующей директивы.
5. Строковые ресурсы
Статья получилась более чем длинной, но не волнуйтесь - это раздел последний.
Особый вид блока объявления констант - это блок строковых ресурсов - Resourcestring . Объявления этого блока очень похожи на объявления строковых констант: строки ресурсов действуют как строки-константы, но они могут быть локализованы с помощью набора специальных процедур модуля objpas . Блок объявления строки ресурса разрешен только в режимах Delphi или Objfpc .
Ниже приведен пример определения строковых ресурсов:
Все строковые константы, определенные в разделе resourcestring , хранятся в специальных таблицах. Со строками в этих таблицах можно работать во время выполнения некоторых специальных механизмов в модуле objpas .
Семантически строки действуют как обычные константы. Этим строкам не разрешается присваивать значения (за исключением специальных механизмов модуля objpas ). Однако они могут использоваться в присваивании или выражениях как обычные строковые константы. Основное использование раздела resourcestring заключается в обеспечении простых средств интернационализации.
Более подробно с темой resourcestrings можно ознакомиться в руководстве программиста, а также в описании модуля objpas . Возможно, я когда-нибудь ещё к этому вернусь.
ПРИМЕЧАНИЕ: обратите внимание, что строка ресурса, которая задана как выражение, не изменится, если части выражения будут изменены:
Если процедуры локализации переводят Part1 и Part2 , то константа Sentence не будет переведена автоматически: она имеет отдельную запись в таблицах строк ресурсов и должна быть переведена отдельно.
Вышеуказанная конструкция просто говорит, что начальное значение Sentence равняется Part1 + ' ' + Part2 .
ВНИМАНИЕ!
Мой компилятор отказался компилировать Sentence = Part1 + ' ' + Part2; , сообщив, что это неправильное выражение. Возможно, это обычный глюк FreePascal, когда документация не вполне соответствует действительности.
ПРИМЕЧАНИЕ: аналогично, при использовании строк ресурсов в массиве констант, в массиве будут использоваться только начальные значения строк ресурсов: при переводе отдельных констант элементы в массиве сохранят свое исходное значение.
Вызов Writeln(YesNo[B]) напечатает Yes. или No. в зависимости от значения переменной B , даже если константы Yes и No локализованы каким-то механизмом локализации (переведены на другой язык).
Ну вот как-то так. Однако, такая простая вещь, как константы, в руках профессионала может оказаться очень даже не простой.
Компьютерные программы обрабатывают (изменяют) различные данные. Программа получает данные, что-то делает с ними и выводит их в измененной форме или выводит другие данные.
Следовательно, любой язык программирования должен иметь инструменты как для ввода данных, так и их вывода. В Паскале ввод осуществляется с помощью процедур read() и readln() , а вывод - благодаря write() и writeln() . Процедуры, которые имеют окончание ln , после своего выполнения переводят указатель на новую строку.
Откуда или с помощью чего можно ввести данные в программу? Обычно это можно сделать с помощью клавиатуры или из файлов.
Куда можно вывести данные? На экран, в файл, на принтер и др.
Стандартным устройством ввода является клавиатура, а вывода — монитор. Стандартные — значит "работающие по-умолчанию"; т.е. если не указано ничего иного, то программа будет считывать данные с клавиатуры, а выводить их на монитор. Вместе клавиатуру и монитор называют консолью. Таким образом консоль представляет собой стандартное устройство ввода-вывода.
Вывод данных на экран. Форматированный вывод
Вывод данных на экран и в файл в языке программирования Pascal осуществляется с помощью процедур write ( ) и writeln ( ) . Здесь будет рассмотрен вывод только на экран.
Допустим, нам требуется отобразить на экране пару фраз. Если мы хотим, чтобы каждая из них начиналась с новой строки, то надо использовать writeln() , если нет – то write() .
Еще один пример. В памяти компьютера хранятся данные. Из программы мы обращаемся к ним с помощью переменных num, fl и st. Вывести их значения на экран можно по-разному.
Во втором случае мы видим, что процедуры вывода (как write() так writeln() ) позволяют конструировать выводимую информацию из различных компонент (строк-констант и переменных).
В третьем случае был осуществлен так называемый форматированный вывод. При этом для выводимого значения указывается ширина поля вывода (количество знакомест). Если мы выводим вещественное (дробное) число, то вторым числом через двоеточие указывается количество знаков после запятой. Если для вещественных чисел не осуществлять форматирование, то они отобразятся так, как определено для данного компьютера. Если указать только число знакомест без фиксирования дробной части, то вывод будет в экспоненциальной форме.
Ввод данных с клавиатуры
Ввод данных в языке программирования Паскаль обеспечивается процедурами read() и readln() . Ввод данных осуществляется либо с клавиатуры, либо из файла. Здесь рассматривается только ввод с клавиатуры.
Когда данные вводятся, то они помещаются в ячейки памяти, доступ к которым обеспечивается с помощью механизма переменных. Поэтому, когда в программе на Pascal используется процедура read() (или readln() ), то в качестве фактического параметра (аргумента) ей передается имя переменной, которая будет связана с вводимыми данными. Потом эти данные можно будет использовать в программе или просто вывести на экран.
В процедуры ввода можно передавать не один фактический параметр, а множество.
При вводе данных их разделяют пробелом, табуляцией или переходом на новую строку (Enter). Данные символьного типа не разделяются или разделяются переходом на новую строку.
Существуют особенности ввода данных с помощью операторов read() и readln() . Если используются подряд несколько операторов read() , то вводимые данные можно разделять всеми допустимыми способами. При использовании нескольких вызовов readln() каждый последующий срабатывает только после нажатия Enter. Программа ниже иллюстрирует это. Комментарии поясняют последовательность возможных действий при вводе данных.
Разделы справочной информации внимательно читать не обязательно, к ним стоит обращаться по мере необходимости.
1 Структура программы на Паскаль
PROGRAM имя программы;
(английскими буквами, одно слово. Хотите глубже? То необходимо воспользоваться правилами написания идентификаторов )
USES подключаемые библиотеки (модули);
(дополнительные возможности, их можно подключать к программе в этой строке)
LABEL список меток;
(из одного места программы «прыгать» в другое)
CONST раздел описания констант;
(постоянные величины, их нельзя изменять)
TYPE описание типов переменных;
VAR определение глобальных переменных;
(описание всех переменных величин, которые в программе могут изменяться)
основной блок программы
Разумеется, что не все приведенные выше блоки обязательны для использования. Сейчас приведем тот минимум, который необходимо использовать.
Данная программа ни чего не делает, так как в ней нет ни одного оператора.
2 Пример программы на Pascal
Запустите Turbo Pascal и перепишите исходный код программы. Теперь запустите программу, это можно сделать зажав сочетание клавиш Ctrl+F9. Результат выполнения программы всегда можно посмотреть зажав сочетание клавиш Alt+F5.
3 Константы и переменные. Примеры
Переменные в Pascal, служат для хранения некоторых величин. Переменные тождественны идентификаторам, т.е. для того, чтобы в программе объявить переменную необходимо назвать ее.
3.1 Константы
Те переменные, которые не изменяются, называются константами. Различают следующие типы констант:
- Числовые константы (целочисленные и вещественные). Пример:
- Символьные константы. Единичный символ, записанный в апострофы:
Если Вы обратили внимание, то в примере у константы не указан явно не указан тип, такие константы называются Обычными константами. Тип обычных констант определяется по их значению.
Помимо обычных констант существуют Типизированные константы. Тип таких констант объявляется явно:
Дополнительно хочется обратить внимание на апострафы в константах. Если Вам в константе понадобится использовать апострофы, то просто продублируйте их:
3.2 Переменные в Pascal
Для хранения данных, полученных от пользователя, в программе вводятся переменные. К примеру для того, чтобы передать программе имя какого-то человека нам нужно в коде программы записать строчку:
Данная строка сообщает нашей программе о том, что нужно получить данные от пользователя и сохранить их в переменную name , которую мы указываем в скобках оператора Read (с англ.: читать).
Теперь попробуем объявить несколько переменных разного типа. Допустим мы хотим знать имя пользователя, его возраст и его рост. Для этого возьмем код программы их первого примера и изменить в соответствии с новыми требованиями.
Хочу обратить ваше внимание на 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 Вещественный тип
В Паскале бывают следующие вещественные типы данных:
Над ними может быть выполнено большее количество операций и функций, чем над целыми. Например, эти функции возвращают вещественный результат:
- sin(x) – синус;
- cos(x) – косинус;
- arctan(x) – арктангенс;
- ln(x) – натуральный логарифм;
- sqrt(x) – квадратный корень;
- exp(x) – экспонента.
4.3 Логический тип
Переменная, имеющая логический тип данных может принимать всего два значения: true (истина) и false (ложь). Здесь истине соответствует значение 1, а ложь тождественная нулю. Объявить булеву переменную можно так:
Var A: Boolean;
Над данными этого типа могут выполняться операции сравнения и логические операции: not , and, or, xor.
4.4 Символьный тип
Символьный тип данных – это совокупность символов, используемых в том или ином компьютере. Переменная данного типа принимает значение одного из этих символов, занимает в памяти компьютера 1 байт. Слово Char определяет величину данного типа. Существует несколько способов записать символьную переменную (или константу):
- как одиночный символ, заключенный в апострофы: ‘W’, ‘V’, ‘п’;
- указав код символа, значение которого должно находиться в диапазоне от 0 до 255.
- при помощи конструкции ^K, где K – код управляющего символа. Значение K должно быть на 64 больше кода соответствующего управляющего символа.
К величинам символьного типа данных применимы операции отношения и следующие функции:
4.5 Строковый тип
Строка в Паскале представляет собой последовательность символов заключенных в апострофы, и обозначается словом String . Число символов (длина строки) должно не превышать 255. Если длину строки не указывать, то она автоматически определиться в 255 символов. Общий вид объявления строковой переменной выглядит так:
Var <имя_переменной>: string[<длина строки>];
Каждый символ в строке имеет свой индекс (номер). Индекс первого байта – 0, но в нем храниться не первый символ, а длина всей строки, из чего следует, что переменная этого типа будет занимать на 1 байт больше числа переменных в ней. Номер первого символа – 1, например, если мы имеем строку S=‘stroka’, то S[1]=s; . В одном из следующих уроков строковый тип данных будет рассмотрен подробнее.
Перечисляемый тип данных
Перечисляемый тип данных представляет собой некоторое ограниченное количество идентификаторов. Эти идентификаторы заключаются в круглые скобки, и отделяются друг от друга запятыми. Пример:
Переменная A может принимать лишь значения определенные в разделе Type . Также можно объявить переменную перечисляемого типа в разделе Var:
Var A: (Monday, Tuesday);
К данному типу применимы операции отношения, при этом заранее определенно, что Monday<Tuesday<Wednesday т. д. Также можно применять функции succ, pred, ord, процедуры inc и dec , и использовать операцию присваивания: A:=Tuesday;
4.6 Интервальный тип данных
Когда необходимо задать какой то диапазон значений, то в таких ситуациях применяется интервальный тип данных. Для объявления используется конструкция m..n, где m – минимальное (начальное) значение, а n – максимально (конечное); здесь m и n являются константами, которые могут быть целого, символьного, перечисляемого или логического типа. Описываться величины интервального типа могут как в разделе типов, так и в разделе описания переменных.
TYPE <имя_типа> = <мин. значение>..<макс. значение>;
TYPE Cards = 1..36;
5 Pascal. Операторы ввода-вывода
5.1 Ввод данных
Процедура ввода данных с клавиатуры – Read (читать). Ее можно представить так:
В качестве списка ввода выступают имена переменных. Во время выполнения оператора ввода данных программа останавливается и ждет, пока они будут введены. Для завершения ввода необходимо нажать Enter . Если переменных несколько, то они могут вводиться через пробел, либо, введя одну переменную нужно нажать Enter , потом ввести вторую и т. д.
Для перевода каретки после выполнения оператора Read на новую строку, следует прибавить окончание ln :
Также можно не указывать список ввода:
Программа не перейдет к выполнению следующей части до тез пор, пока не выполниться пустой оператор.
5.2 Вывод данных
Для вывода данных в Паскале имеется оператор Write . Для того, чтобы каретка переводилась на следующую строку, к нему прибавляется окончание ln и получается Writeln . В общем виде эти операторы имеют вид:
Элементами списка вывода являются величины различных типов, в том числе выражения и строки, отделенные друг от друга запятыми, например:
Здесь x и y – параметры, заключенные в круглые скобки. Возможно использование оператора вывода и без параметров:
Недостаточно просто вывести значение на экран, нужно также сделать это как можно корректнее. Допустим нам нужно в одном операторе Write вывести значения нескольких переменных ( a=1, b=2, c=3 ). Пишем:
После выполнения, на экране действительно отобразятся значения данных переменных, но это понятно компьютеру, а пользователь увидит число 123 . Необходимо придать вид выводимым данным, сделать это в Паскале можно двумя способами:
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
Выражение состоит из переменных, констант, полей в записях, указателей функций, круглых скобок и знаков операций. Для корректной записи выражений необходимо знать не только как обозначаются те или иные операции, функции и т. п., но также стоит предусмотреть приоритеты их выполнения, математические и логические правила, а также некоторые тонкости самого языка. Для более углубленного изучения выражений, стоит рассмотреть несколько примеров.
1) 12+3*3=21 (12+3)*3=45
Как видите выражения в Pascal, имеют такой же приоритет, как и в математике, а с помощью круглых скобок его можно изменить.
Такое логическое выражение возвращает истину, лишь в том случае, когда истинны оба выражения, т. е. если a входит в диапазон от 1 до 20 включительно. Стоит обратить внимание на скобки, здесь они необходимы для изменения приоритета, так как у операторов сравнения он низший.
3) (a+3>0) and (a+3<15) or (b>1) and (b<10)
Условие вернет истину, тогда когда истинными будут два условия слева или справа от 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<15) xor (b>1) and (b<10)
В Pascal нет функции возведения числа в степень (кроме степени 2), поэтому существует два пути:
1 — умножать число само на себя, какое то количество раз;
2 — воспользоваться функциями экспоненты и натурального логарифма.
В этом примере использованы оба варианта, но если степень, в которую необходимо возвести число, достаточно велика, то предпочтение следует отдать второму способу.
Иногда, бывает так, что у нас в программе встречаются величины, которые не меняются в процессе выполнения программы (т.е. фактически они противоположность переменных). Такие величины называются константами. Константы указываются в специальном разделе, который называется Const.
- Целые числа. Они записываются со знаком или без знака и могут иметь значение от – 2 147 483 648 до + 2 147 483 647. Если константа имеет значение, выходящее за эти пределы, то в качестве значения константы необходимо использовать вещественные числа.
- Вещественные числа записываются со знаком или без знака с использованием десятичной точки или экспоненциальной части, которая начинается с символа «e», за которым следует десятичный порядок. Например, запись 3.14e5 означает 3,14*10 5 . А запись – 3.14e-4 означает – 3,14*10 -4 .
- Шестнадцатеричные числа, которые состоят из шестнадцатеричных цифр со знаком доллара «$» впереди. Диапазон шестнадцатеричных чисел — от $00000000 до $FFFFFFFF.
Строка №3. Раздел Const - это раздел, который описывает константы. Он должен находиться перед разделом Var, описывающий переменные. В данном случае, в разделе описания констант мы записываем константу «G», которая будет являться именем нашей константы (имя мы придумываем сами) и указываем для нее значение 9.8. В нашей программе константа «G» будет описывать ускорение свободного падения, которое, как известно, величина постоянная и равна 9.8 м/с. Тип константы определяется автоматически. Т.е. здесь, в отличии от раздела описания переменных Var не нужно указывать тип данных. В данном случае число 9.8 дробное, поэтому тип данных будет вещественным. Обратите внимание, что когда мы присваиваем константе какое-либо значение, то используется знак «=». Это отличает константы от переменных. Если Вы помните, то при присвоении переменной какого-либо значения используется знак «:=».
В строке №9 записываем формулу для расчета скорости свободного падения, которая, как известно, вычисляется по формуле V 2 =2gh
В появившемся окне введем высоту башни, например 10, и нажмем Enter.
Использование шестнадцатеричных чисел в качестве значения константы.
В строке №3 записываем имя константы, которое придумываем сами. Например, назовем константу латинской буквой «t». Затем присваиваем константе значение $f. «f» в шестнадцатеричной системе счисления имеет значение 15.
В строке №6 выводим значение константы на экран.
Дополнение к материалу.
В качестве констант могут выступать не только числа. В следующих уроках вы сможете познакомиться с логическими константами, символными константами и строковыми константами.
Рассмотрим наиболее распространенные в 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 (только диапазон значений здесь значительно больше).
Примеры того, как описываются (объявляются) переменные в Паскале:
program a1; var x,y:integer; myname:string; begin x:=1; y:=x+16; myname:='Петр'; writeln ('имя: ',myname, ', возраст: ', y) end.
program a1; begin var x, y: integer; var myname: string; x := 1; y := x + 16; myname := 'Петр'; print($'имя: , возраст: ') end.
Результат:
имя: Петр, возраст: 17
Комментарии в Паскале
Задача 5. Население Москвы равняется а=9000000 жителей. Население Нью-Васюков равняется b=1000 жителей. Напишите программу, которая определяет разницу в числе жителей между двумя городами. Используйте переменные величины.[Название файла: L1task5.pas ]
Вещественные типы данных в Паскаль
Тип | Диапазон | Требуемая память (байт) |
real | 2.9 * 10E-39 .. 1.7 * 10E38 | 6 |
single | 1.5 * 10 E-45 .. 3.4 * 10E38 | 4 |
double | 5 * 10E-324 .. 1.7 * 10E308 | 8 |
extended | 1.9 * 10E-4951 .. 1.1 * 10E4932 | 10 |
Выше были представлены простые типы данных в Паскаль, к которым относятся:
- Порядковые
- Целые
- Логические
- Символьные
- Перечисляемые
- Интервальные
- Вещественные
Наряду с простыми типами в языке еще используются структурированные типы данных и указатели, которым будут посвящены последующие уроки по Паскалю.
Константы в Паскале
Зачастую в программе заранее известно, что переменная будет принимать какое-то конкретное значение и не менять его на протяжении выполнения всей программы. В таком случае необходимо использовать константу.
Объявление константы в Паскале происходит до объявления переменных (до служебного слова var ) и выглядит следующим образом:
Пример описания константы в Паскале:
const x=17; var myname:string; begin myname:='Петр'; writeln ('имя: ',myname, ', возраст: ', х) end.
const x = 17; begin var myname := 'Петр'; print($'имя: , возраст: ') end.
Вывод целых чисел
Вывод вещественных чисел
Арифметические операции в Паскале
Порядок выполнения операций
- вычисление выражений в скобках;
- умножение, деление, div, mod слева направо;
- сложение и вычитание слева направо.
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 в Паскале, произносимая как инкремент, это стандартная процедура pascal, которая обозначает увеличение на единицу.
Пример операции inc:
Пример использования функции odd:
begin WriteLn(Odd(5)); WriteLn(Odd(4)); end.
Пример использования процедуры sqr в Pascal:
var x:integer; begin x:=3; writeln(sqr(x)); end.
Однако в компиляторе pascal abc возведение в степень осуществляется значительно проще:
Читайте также: