что такое var в паскале
Основы PascalABC.NET
Содержание
Синтаксис программ [ править ]
Минимальная структура программы:
Константы [ править ]
В данной секции располагаются определенные пользователем константы. Синтаксис объявления констант выглядит так:
Секция «var» [ править ]
Данная секция предназначена для переменных и массивов. Переменные объявляются так:
Простейшие типы [ править ]
Тип строка [ править ]
Операция | Описание |
---|---|
s1 + s2 | Объединение строк |
s1*n | Дублирование строки n раз |
Тип целое число integer [ править ]
Тип вещественное число real [ править ]
Декларация переменной типа real:
Пример присваивания переменной данного типа:
Тип символ [ править ]
Тип символ или «char» используется в основном для хранения одного любого символа вне зависимости от того, является ли данный символ буквой или цифрой. Объявление переменной символьного типа:
Данный раздел программы содержит все команды, выполняемые при ее запуске. Данная секция программы выглядит так:
Комментарии [ править ]
Массивы [ править ]
P. S. Для работы с массивами существует учебный модуль Arrays.
Статические [ править ]
Статические массивы имеют фиксированный размер. Общий синтаксис объявления данных массивов выглядит так:
Матрицы [ править ]
Двумерные [ править ]
, где N, M количество строчек и столбцов соответственно.
Трехмерные [ править ]
Трехмерный матрицы обладают третьим измерением:
N-мерные матрицы [ править ]
Декларация N-мерной матрицы:
, где A..Z означают количество элементов в соответствующем измерении.
Статические и динамические массивы [ править ]
Динамические массивы позволяют управлять количеством элементом в каждом из их измерений во время выполнения программы.
Пример объявления массива: | Статический | Динамический | Вызов SetLength (для динамического массива) | ||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Векторный |
N-мерный массив | Общий синтаксис указания элемента массива | Пример | |||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Векторный |
Операция | Эквивалент в Паскале |
---|---|
≤ (меньше или равно) | |
≥ (больше или равно) | >= |
> (больше) | > |
= (равно) | = |
≠ (не равно) | <> |
Общий синтаксис сравнения двух величин:
Оператор case [ править ]
Оператор case используется для сопоставления значения некоторого выражения с константными значениями:
Оператор цикла while [ править ]
Оператор цикла позволяет выполнять группу операторов (или один) циклически пока условие является истинным.
Счетчик [ править ]
Оператор break [ править ]
Для выхода из цикла можно использовать break:
Новая итерация цикла [ править ]
Для завершения текущей итерации цикла и начала другой используйте оператор continue.
Функции [ править ]
Общий синтаксис описания функции:
Можно устанавливать значение переменной Result для указания возвращаемого значения.
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.
Базовые конструкции PascalABC.NET
Описания переменных внутри блока и автовывод типов
В большинстве случаев переменные описываются в блоке begin-end и описание совмещается с инициализацией:
Это решает сразу несколько проблем:
При таком способе возникает одна проблема: если надо накопить сумму вещественных, то такой код приведет к ошибке типов:
Для исправления этой ошибки всё равно придётся говорить о типах и инициализировать sum одним из двух способов:
Цикл for var
Это делает невозможным использование счётчика цикла вне цикла
Цикл loop
Если количество повторений цикла заранее известно, но неважен номер повторения, то используется цикл loop:
Множественное описание переменных с инициализацией
Можно инициализировать сразу несколько переменных в момент описания:
Вывод
Для вывода вместо процедуры Write предпочтительно использовать процедуру Print. В отличие от Write она разделяет элементы вывода пробелами. Например:
Для вывода нескольких значений с пояснениями рекомендуется использовать интерполированные строки:
вместо режущего глаз
Ввод принято осуществлять, используя функции вида ReadInteger, ReadReal и т.д.:
Это позволяет совмещать описание переменной с инициализацией и автовыводом типа. В качестве дополнительных бонусов: можно делать приглашение к вводу как параметр функции ввода и вводить сразу несколько переменных одного типа:
Для ввода с контролем ошибок используется функция TryRead. Она возвращает False если ввод осуществлён неверно (введено не число или число выходит за границы диапазона). Типичный пример её использования:
Тип BigInteger
Для работы с длинными целыми используется тип BigInteger. Например, чтобы вычислить 100!, достаточно написать следующий код:
Некоторые полезные стандартные процедуры, функции и операции
Для обмена значений двух переменных a и b используйте стандартную функцию Swap(a,b) :
Разумеется, первый раз необходимо показать, что обмен значений осуществляется через третью переменную:
Но далее следует использовать Swap.
Минимальное и максимальное среди множества значений можно вычислить, используя стандартные функции Min и Max:
Для возведения в степень используется операция ** :
Для проверки принадлежности диапазону используется конструкция x in a..b :
Эта операция эффективна и переводится в
Диапазоны также можно использовать для вещественных значений и для символов:
Для проверки принадлежности множеству значений используется либо множество:
Условная операция
Если переменной необходимо присвоить значение в зависимости от условия, то вместо условного оператора иногда нагляднее использовать условную операцию:
Методы в стандартных типах
Например, чтобы вывести значение переменной базового типа, можно использовать метод Print:
Из других интересных методов для начинающих для целых типов отметим:
Например, в следующей программе вычисляется количество четных двузначных из 10 введённых:
Для вещественных значений полезными являются методы
В частности, удобно использовать цепочечную точечную нотацию:
Для всех числовых типов также определены константы MinValue и MaxValue. Чтобы обратиться к ним, следует использовать имя типа:
Кортежи
Присваивание (a,b) := (b,a) позволяет поменять значения двух переменных.
Использование кортежей даже в начальных задачах крайне многообразно.
Пример 1. Нахождение наибольшего общего делителя
Занятие 1. Pascal abc.net: Основные особенности при работе с переменными и условный оператор
Принцип локальности
В обычном Паскале описание переменных обычно находится до тела программы:
Если программный код достаточно большой, то такой вариант инициализации переменных весьма неудобен. В Pascal abc.net переменные могут описываться внутри тела программы — между begin и end и инициализироваться при описании.
В этом состоит принцип локальности: переменная описывается непосредственно перед началом своего использования.
Внутриблочные переменные позволяют сильно уменьшить количество глобальных переменных в разделе описания.
Т.е. чем ближе к месту использования описывается некоторый программный объект, тем читабельней код и модифицируемей программа.
begin var n:integer; read(n);
begin var n:=ReadInteger(‘введите n: ‘);
Теперь этот фрагмент кода можно вырезать и перенести в функцию или в модуль. В этом и заключается модифицируемость.
var n:=ReadInteger(); var n:=ReadReal();
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.
для нескольких заданных x.
begin writeln(‘Введите значение x’); var x:=ReadReal; var a:=(x-3)*(x-3)*(x-3); var y:= 5*sqr(a)-8*a+2; writeln(‘Значение функции для x = ‘, y); end.
Задача abc_net 1. Найдите расстояние между двумя точками с заданными координатами (x1,y1) и (x2,y2) на плоскости. Расстояние вычисляется по формуле:
Проверьте правильность вашей программы на следующих значениях:
[Название файла: L1abc1.pas ]
Базовые типы и методы внутри стандартных типов
Для обращения к методам используется точечная нотация:
Исключение — управляемая ошибка, которую можно перехватывать и погашать.
WritelnFormat(‘f(<0>, <1>) = <2>‘, a, b, c);
то нужно просто заменить a, b на , :
WritelnFormat(‘ <0>+ <1>= <1>+ <0>= <2>‘, a, b, x + y)
Стандартные функции
Обмен значениями переменных происходит без использования буферной переменной:
Поиск максимального и минимального значения:
Операции целочисленного деления и остатка
[Название файла: L1abc2.pas ]
Работа с отдельными цифрами числа
begin var a := abs(readinteger); // модуль числа println(a div 100 + (a div 10) mod 10 + a mod 10); end.
Приведите лог работы программы с одним из введенных чисел в форме комментария.
[Название файла: L1abc3.pas ]
[Название файла: L1abc4.pas ]
Логические выражения и условный оператор
Логические переменные и выражения
Логическое выражение после его вычисления возвращает значение True (истина) или False (ложь).
Логическое выражение может включать:
begin var (a, b) := readinteger2; println(a > b); end.
[Название файла: L1abc5.pas ]
[Название файла: L1abc6.pas ]
Чаще всего логические выражения используются внутри условного оператора, который выполненяет определённые действия в зависимости от истинности выражения:
Короткая форма условного оператора:
if then // выполнится, если возвращает True
При использовании нескольких операторов в одном условии необходимы операторные скобки begin..end :
[Название файла: L1abc7.pas ]
[Название файла: L1abc8.pas ]
Рассмотрим оператор на примере:
Вводится номер единицы длины (целое число в диапазоне 1–5) и длина отрезка в этих единицах (вещественное положительное число). Найти длину отрезка в метрах.
begin var n := readinteger(‘Введите номер единицы:’); var a := readreal(‘Введите длину в заданных единицах:’); case n of 1: a /= 10; // дециметр 2: a *= 1000; // километр 4: a /= 1000; // миллиметр 5: a /= 100; // сантиметр end; println(‘Длина в метрах:’, a); end.
Pascal. Простые типы данных
При описании переменной необходимо указать ее тип. Тип переменной описывает набор значений, которые она может принимать, и действия, которые могут быть над ней выполнены. Описание типа определяет идентификатор, который обозначает тип.
Простые типы делятся на стандартные (порядковые) и перечисляемые (ограниченные).
Стандартные типы
Турбо-Паскаль имеет четыре встроенных стандартных типа: integer (целое), real (вещественное), boolean (логический) и char (символьный).
Целочисленный тип (integer)
В Турбо-Паскале имеется пять встроенных целочисленных типов: shortint (короткое целое), integer (целое), longint (длинное целое), byte (длиной в байт) и word (длиной в слово). Каждый тип обозначает определенное подмножество целых чисел, как это показано в следующей Таблице.
Встроенные целочисленные типы.
Диапазон
Формат
16 битов со знаком
16 битов без знака
Арифметические действия над операндами целочисленного типа осуществляются в соответствии со следующими правилами:
Операции совершаемые над целыми числами:
RANDOM(X)-получение случайного числа от 0 до Х
Описываются переменные целого типа следующим образом:
var список переменных: тип;
Например: var а,р,n:integer;
Вещественный тип(real)
Имеется пять видов вещественных типов: real, singlе, duble, exnende, comp. Вещественные типы различаются диапазоном и точностью связанных с ними значений
Диапазон и десятичные цифры для вещественных типов
Диапазон
Цифры
2.9×10Е-39 до 1.7×10Е 38
1.5×10Е-45 до 3.4×10Е 38
5.0×10Е-324 до 1.7×10Е 308
3.4×10Е-493 до 1.1×10Е 403
Операции совершаемые над вещественными числами:
Описываются переменные вещественного типа следующим образом:
Символьный тип(char)
K типу char относится любой символ заключенный в апострофы. Для представления апострофа как символьную переменную, надо заключить его в апостроф:’’’’.
Каждый символ имеет свой код и номер. Порядковые номера цифр 0,1..9 упорядочены по возрастанию. Порядковые номера букв также упорядочены по возрастанию, но не обязательно следуют друг за другом.
К символьным данным применимы знаки сравнения:
Можно выполнить такие операторы присваивания:
но нельзя выполнять смешанные присваивания:
К переменным перечислимого типа применимы следующие функции:
Переменные перечислимого типа можно сравнить, так как они упорядочены и пронумерованы. Так выражения: север запад и бак Будет полезно почитать по теме:
- Что такое хронический рецидивирующее течение
- в какой стране находится национальный парк банф