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.
Учитель информатики
Сайт учителя информатики. Технологические карты уроков, Подготовка к ОГЭ и ЕГЭ, полезный материал и многое другое.
Уроки Паскаль № 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, ‘.’);

Заменим строку 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.
И вот результат исполнения программы.

Переменные и константы
Переменные
Любая программа обрабатывает данные (информацию, объекты). Данные, с которыми работает программа, хранятся в памяти компьютера (чаще оперативной). Программа должна знать, где они лежат, каким объемом памяти она располагает, как следует интерпретировать данные (например, как числа или строки). Для обеспечения программе доступа к участкам памяти существует механизм переменных.
Переменные описываются в начале программы и как бы сообщают о том, с какими данными будет работать программа и какой объем памяти они займут. Другими словами, резервируется память. Но это не значит, что в эти ячейки памяти помещаются конкретные значения (данные). На момент резервирования памяти в них может быть что угодно.
В процессе выполнения программы в ячейки памяти будут помещаться конкретные значения, извлекаться оттуда, изменяться, снова записываться. Мы же через программу обращаемся к ним посредством имен переменных, которые были описаны в начале программы.
Имена переменных могут быть почти любым сочетанием английских букв и цифр (без пробелов). Нельзя чтобы имена переменных совпадали со словами, которые являются какими-либо командами самого языка программирования. Нельзя начинать имена переменных с цифры или специального символа. Для того чтобы имена переменных были удобны для восприятия, надо стараться придерживаться пары правил. Если программа не простейший пример, то имена переменных должны быть осмысленными словами или их сокращениями. Желательно, чтобы имена переменных не были слишком длинными.
В Pascal прописные и строчные буквы в именах переменных не различаются.
При описании переменных указывается не только их имя, но и тип. Тип переменных сообщает о том, сколько отвести под них памяти и что за данные там планируется сохранять. Точнее хранится там всегда будут числа в двоичной системе счисления. Но что они значат, может быть чем угодно: целым или дробным числом, символом, строкой, массивом, записью и др. Т.е. тип переменной определяет то, что мы можем сохранить в участке памяти, с которым связана описываемая переменная.
Пример работы программы:
Итак, переменные связаны с участками памяти, содержимое которых может меняется по ходу выполнения программы в определенных пределах.
Длина переменных
Ранние версии компиляторов Паскаля имели ограничение на учитываемую длину имен переменных. В имени учитывались лишь первые восемь символов. Поэтому, например, такие переменные как variable1 и variable2 компилятор воспринимал как одно и тоже, т.к. первые восемь символов совпадали.
В современных версиях компиляторов с языка Pascal таких ограничений нет. Например, в результате работы приведенной ниже программы как в среде Free Pascal, так и Turbo Pascal 7.1 на экран выводятся два разных числа (10 и 20). Это значит, что компиляторы учитывают больше восьми символов в именах переменных (и других идентификаторов: именах констант, процедур и др.).
Константы
Что делать, если в программе требуется постоянно использовать какое-нибудь одно и тоже число. Вроде бы это не проблема. Можно описать переменную, затем присвоить ей значение и не изменять его в программе. Однако это не всегда удобно (можно нечаянно изменить), поэтому в языках программирования для хранения данных помимо переменных существуют константы.
Главное преимущество констант заключается в том, что они описываются в начале программы и им сразу там же присваивается значение, а при выполнении программы константы не изменяются. Но если при правке кода, программист решит поменять значение константы, он впишет в ее описание другое значение, а сам код программы редактировать не придется. Поэтому, если в программе часто планируется использоваться какое-то значение, опишите его в разделе констант, который в программе располагается до раздела переменных:
Значениями констант могут быть данные большинства типов, используемых в языке Паскаль.
Рассмотрим такую программу:
В ней используется константа n со значением 10. Программа считает сумму десяти чисел в диапазоне от 1 до 10. Если нам захочется посчитать сумму чисел до 20, то достаточно будет изменить значение константы в начале программы. Если бы константа не использовалась, то пришлось бы просмотреть весь код программы и исправить значение 10 на 20. Если программа большая, то легко ошибиться: не найти или исправить не то значение.
Типизированные константы
В языке Паскаль помимо обычных констант используются типизированные константы. Можно сказать, что они занимают промежуточное положение между переменными и константами. Они получают значение при описании (как константы), но могут его менять в теле программы (как переменные).
Описываются типизированные константы в разделе констант:
То, что вы не знали о константах
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 заключается в обеспечении простых средств интернационализации.
ПРИМЕЧАНИЕ: обратите внимание, что строка ресурса, которая задана как выражение, не изменится, если части выражения будут изменены:
ПРИМЕЧАНИЕ: аналогично, при использовании строк ресурсов в массиве констант, в массиве будут использоваться только начальные значения строк ресурсов: при переводе отдельных констант элементы в массиве сохранят свое исходное значение.
Ну вот как-то так. Однако, такая простая вещь, как константы, в руках профессионала может оказаться очень даже не простой.
В Паскале, как и в других языках программирования данные делятся на константы и переменные. Для получения текущих значений переменных и констант к ним можно обращаться в программе по именам.
Обычно переменная получает текущее значение в результате выполнения оператора присваивания (например, s := 0 – переменной s присваивается значение 0). Это значение будет сохраняться до тех пор, пока этой переменной не будет присвоено новое значение (при этом предыдущее значение теряется безвозвратно!)
Важно: попытка присвоить переменной значение иного типа является ошибкой.
Описание переменных
В случае, если необходимо описать несколько переменных, то они перечисляются в списке через запятую. Например:
В последних двух случаях тип переменной определяется автоматически по типу выражения в правой части. Заметим, что по умолчанию все переменные, описанные в главной программе, обнуляются.
PascalABC.NET позволяет описывать переменные внутри составного оператора begin-end в специальном операторе описания переменной. Такие описания называются внутриблочными. Для внутриблочного описания можно использовать формы приведенные выше. Например:
Описание констант
Константы – это элементы данных, значения которых устанавливаются в разделе описаний и не изменяются в процессе выполнения программы
Раздел описания именованных констант в языке программирования Паскаль начинается с ключевого слова const после которого следуют описания в следующих формах:
Использование именованных констант позволяет улучшить читаемость программы и облегчает внесение в нее изменений.
Copyright © 2014-2021, Урок информатики
Все права защищены





