Как найти значение переменной в паскале

В этом уроке рассмотрим:

  1. Структуру программы на языке Паскаль
  2. Примеры простейших программ
  3. Работу с переменными. Примеры
  4. Справочная информация по типам данных
  5. Справочная информация по операторам ввода/вывода
  6. Справочная информация выражениям и стандартным функциям

Разделы справочной информации внимательно читать не обязательно, к ним стоит обращаться по мере необходимости.

1 Структура программы на Паскаль

PROGRAM имя программы;
(английскими буквами, одно слово. Хотите глубже? То необходимо воспользоваться правилами написания идентификаторов)

USES подключаемые библиотеки (модули);
(дополнительные возможности, их можно подключать к программе в этой строке)

LABEL список меток;
(из одного места программы «прыгать» в другое)

CONST раздел описания констант;
(постоянные величины, их нельзя изменять)

TYPE описание типов переменных;

VAR определение глобальных переменных;
(описание всех переменных величин, которые в программе могут изменяться)

ОПРЕДЕЛЕНИЕ ПРОЦЕДУР;

ОПРЕДЕЛЕНИЕ ФУНКЦИЙ;

BEGIN

основной блок программы

END.

Разумеется, что не все приведенные выше блоки обязательны для использования. Сейчас приведем тот минимум, который необходимо использовать.

Program ex123; 
Begin 
End. 

Данная программа ни чего не делает, так как в ней нет ни одного оператора.

2 Пример программы на Pascal

Hello world на паскаль

Результатом данный программы будет вывод на экран строки «Hello, World!».

Program Hello_World;
Begin
	Write('Hello, World');
End.

Запустите Turbo Pascal и перепишите исходный код программы. Теперь запустите программу, это можно сделать зажав сочетание клавиш Ctrl+F9. Результат выполнения программы всегда можно посмотреть зажав сочетание клавиш Alt+F5.

Тут:

  1. Program Hello_World; — это название вашей программы, зачастую его не используют.
  2. Все что пишется до первого Begin — это раздел описания. Здесь программа просто сообщает компилятору сведения об используемых объектах и еще некоторую информацию.
  3. Основной блок кода, так называемый раздел операторов, всегда начинается с Begin и заканчивается End. (обратите внимание: Begin всегда без точки, а последний закрывающий End. всегда с точкой).
  4. Write('Hello, World'); — это первый исполняемый оператор в нашей программе, который сообщает компилятору о том, что необходимо напечатать строку "Hello, World!".

Стоит отметить, что язык Паскаль не чувствителен к регистру символов, т.е. write(), Write(), WRITE(), и даже WrItE() — все это для Паскаля означает одно и тоже.

Вычисление суммы двух чисел на Паскаль

Program Summa; { программа называется Summa }

Const
  A = 23;
  B = 76;

var
  S: integer;

begin
  S := A + B; { сумма чисел A и B }
  writeln('Сумма чисел 23 и 76 равна: S = ', S);
  readln { <-- Ожидание нажатия Enter, после 
   которого программа завершится }
end.

Предлагаю сразу запустить эту программу, а пояснения к ней можно найти ниже…

3 Константы и переменные. Примеры

Переменные в Pascal, служат для хранения некоторых величин. Переменные тождественны идентификаторам, т.е. для того, чтобы в программе объявить переменную необходимо назвать ее.

3.1 Константы

Те переменные, которые не изменяются, называются константами. Различают следующие типы констант:

  • Числовые константы (целочисленные и вещественные). Пример:
    const
      N: integer = 12; //число N – целого типа
      S: integer = 5; //число S – целого типа
      pi: real = 3.14; //число «пи» - вещественного 
    

    После объявления каждой величины указывается её тип, а потом присваивается значение. Но предыдущая запись тоже верна, поскольку компилятор Паскаля настроен так, что он автоматически определяет тип постоянной. Но этого нельзя сказать о следующем типе чисел – переменных.

  • Символьные константы. Единичный символ, записанный в апострофы:

    'А', 'В'

  • Строковые константы. Некоторая произвольная последовательность символов, заключенная в апострофы:

    'Pascal programming language'

Рассмотрим программу «Hello world!» с использованием константы.

Program Hello_World_With_Const;
Uses Crt;

Const hello = 'Привет, ';

Var name:string;

Begin
	ClrScr;
	Write('Введите имя: ');
	Read(name);
	Write(hello, name, '!');
	ReadLn
End.

В данном случае мы объявили константу hello равную значению ‘Привет, ‘. Далее в программе достаточно в нужном месте подставить эту константу. Теперь если нам вдруг понадобиться вместо программы, которая здоровается, сделать программу, которая прощается, достаточно в начале программы поменять «Привет, » на «До свидания, » и программа будет прощаться с пользователем.

Если Вы обратили внимание, то в примере у константы не указан явно не указан тип, такие константы называются Обычными константами. Тип обычных констант определяется по их значению.

Помимо обычных констант существуют Типизированные константы. Тип таких констант объявляется явно:

Const
  Stroka :string = 'Привет';
  Number :Integer = 777;
  Pi :Real = 3.14159;

Дополнительно хочется обратить внимание на апострафы в константах. Если Вам в константе понадобится использовать апострофы, то просто продублируйте их:

Const
  stroka = 'I''m a programmer!';

3.2 Переменные в Pascal

Для хранения данных, полученных от пользователя, в программе вводятся переменные. К примеру для того, чтобы передать программе имя какого-то человека нам нужно в коде программы записать строчку:

Read(name);

Данная строка сообщает нашей программе о том, что нужно получить данные от пользователя и сохранить их в переменную name, которую мы указываем в скобках оператора Read(с англ.: читать).

Хочу обратить Ваше внимание на тот факт, что все идентификаторы(переменные, название программы) в коде Turbo Pascal могут состоять исключительно из символов латинского алфавита (A-Z, a-z), цифр (0-9) и символа нижнего подчеркивания («_»). Также идентификаторы не должны начинаться с цифр.

/* Примеры правильных имен переменных */
    variable
    Variable
    var1
    var_1234
    VARIABLE
/* Примеры не правильных имен переменных */
    -variable
    123Var
    Var-123	

Для целых чисел часто используются два основных типа: Integer и LongInt. Единственным отличием типов переменных, используемых для одного формата данных, — это Диапазон допустимых значений. К примеру для Integer диапазон допустимых значений [-32768, 32767], то есть минимальным значением для переменной типа Integer является число -32768, а максимальным — 32767.

Переменные перед использованием надо объявить в секции var, при этом указывается тип переменных. Например:

var
  N, m: integer;
  Q, r, t: real;

Секция описания переменных всегда стоит после описания констант (постоянных) – сначала идет конструкция const, а потом var.

Теперь попробуем объявить несколько переменных разного типа. Допустим мы хотим знать имя пользователя, его возраст и его рост. Для этого возьмем код программы их первого примера и изменить в соответствии с новыми требованиями.

Program Hello_World_With_Variable;
Uses Crt;

Var name :string;
    years, height :Integer;
Begin
    ClrScr;
    Write('Введите Ваше имя: ');
    ReadLn(name);
    Write('Сколько Вам лет? ')
    ReadLn(years);
    Write('Какой у Вас рост?(в см) ')
    ReadLn(height);
    Write('Привет, ', name, '! Я знаю что тебе ', years, ' лет', ' и твой рост составляет', height, ' см');
    ReadLn
End.

Хочу обратить ваше внимание на 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

Над ними может быть выполнено большее количество операций и функций, чем над целыми. Например, эти функции возвращают вещественный результат:

  • 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 определяет величину данного типа. Существует несколько способов записать символьную переменную (или константу):

  1. как одиночный символ, заключенный в апострофы: ‘W’, ‘V’, ‘п’;
  2. указав код символа, значение которого должно находиться в диапазоне от 0 до 255.
  3. при помощи конструкции ^K, где K – код управляющего символа. Значение K должно быть на 64 больше кода соответствующего управляющего символа.

К величинам символьного типа данных применимы операции отношения и следующие функции:

  • Succ(x) — возвращает следующий символ;
  • Pred(x) — возвращает предыдущий символ;
  • Ord(x) — возвращает значение кода символа;
  • Chr(x) — возвращает значение символа по его коду;
  • UpCase(x) — переводит литеры из интервала

4.5 Строковый тип

Строка в Паскале представляет собой последовательность символов заключенных в апострофы, и обозначается словом String. Число символов (длина строки) должно не превышать 255. Если длину строки не указывать, то она автоматически определиться в 255 символов. Общий вид объявления строковой переменной выглядит так:

Var <имя_переменной>: string[<длина строки>];

Каждый символ в строке имеет свой индекс (номер). Индекс первого байта – 0, но в нем храниться не первый символ, а длина всей строки, из чего следует, что переменная этого типа будет занимать на 1 байт больше числа переменных в ней. Номер первого символа – 1, например, если мы имеем строку S=‘stroka’, то S[1]=s;. В одном из следующих уроков строковый тип данных будет рассмотрен подробнее.
Перечисляемый тип данных

Перечисляемый тип данных представляет собой некоторое ограниченное количество идентификаторов. Эти идентификаторы заключаются в круглые скобки, и отделяются друг от друга запятыми. Пример:

Type Day=(Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday);

Var A: Day;

Переменная 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 (читать). Ее можно представить так:

Read(<Список ввода>);

В качестве списка ввода выступают имена переменных. Во время выполнения оператора ввода данных программа останавливается и ждет, пока они будут введены. Для завершения ввода необходимо нажать Enter. Если переменных несколько, то они могут вводиться через пробел, либо, введя одну переменную нужно нажать Enter, потом ввести вторую и т. д.

Для перевода каретки после выполнения оператора Read на новую строку, следует прибавить окончание ln:

Readln(<Список ввода>);

Также можно не указывать список ввода:

Readln;

Программа не перейдет к выполнению следующей части до тез пор, пока не выполниться пустой оператор.

5.2 Вывод данных

Для вывода данных в Паскале имеется оператор Write. Для того, чтобы каретка переводилась на следующую строку, к нему прибавляется окончание ln и получается Writeln. В общем виде эти операторы имеют вид:

Write(<Список вывода>);

Writeln(<Список вывода>);

Элементами списка вывода являются величины различных типов, в том числе выражения и строки, отделенные друг от друга запятыми, например:

Write(x, y);

Здесь x и y – параметры, заключенные в круглые скобки. Возможно использование оператора вывода и без параметров:

Writeln; {Курсор переведется на следующую строку}

Недостаточно просто вывести значение на экран, нужно также сделать это как можно корректнее. Допустим нам нужно в одном операторе Write вывести значения нескольких переменных (a=1, b=2, c=3). Пишем:

Write(a, b, c);

После выполнения, на экране действительно отобразятся значения данных переменных, но это понятно компьютеру, а пользователь увидит число 123. Необходимо придать вид выводимым данным, сделать это в Паскале можно двумя способами:

1) Вписать пробел вручную, например:

Write(a, ‘ ’, b, ‘ ’, c);

2) Воспользоваться возможностью форматированного вывода:

Write(a, b:2, c:2);

Двоеточие относиться к переменной, после которой оно следует, и говорит программе, что при выводе (переменной) нужно выделить место, заданное целым числом (в нашем случае это 2), т. е. под значения, хранящиеся в переменных b и c отводиться две клетки, сами они выведутся «прижатыми» к правому краю.

Процедура форматированного вывода может применяться и к другим типам данных, но особого внимания заслуживает вещественный тип. Как известно переменные вещественного типа имеют целую и дробную части, поэтому для них предусмотрена такая форма записи с использованием формата:

Write(32.1012:5:2);

Результат выполнения: 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, имеют такой же приоритет, как и в математике, а с помощью круглых скобок его можно изменить.

2) (a>1) and (a<=20)

Такое логическое выражение возвращает истину, лишь в том случае, когда истинны оба выражения, т. е. если 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)

4) x^(a) = exp(a*ln(x))

В Pascal нет функции возведения числа в степень (кроме степени 2), поэтому существует два пути:

1 — умножать число само на себя, какое то количество раз;

2 — воспользоваться функциями экспоненты и натурального логарифма.

В этом примере использованы оба варианта, но если степень, в которую необходимо возвести число, достаточно велика, то предпочтение следует отдать второму способу.

В этом уроке речь пойдёт о переменных в языке Pascal. Давайте попробуем на образах понять, что же такое переменная.

Переменная представляет собой «ящик», в который мы можем что-то положить, что-то заменить и что-то удалить, и у этого ящика есть какой-то размер, получается в него может поместится далеко не всё.

Мы можем что-то достать из ящика и показать это, потом положить обратно.

Получается — переменная своеобразный ящик, с которым можно работать.

Насчёт содержимого ящика: в зависимости от типа ящика, можно положить в него различные предметы.

Так же и с переменными в Pascal: им задаётся специальный тип, благодаря которому в переменную можно положить ( записать ), например числа, или строковые значения.

Отличие языка Паскаль от других в том, что этот язык дисциплинирует программиста, в Паскаль всё строго — все типы переменных должны соответствовать их содержимому. О типах переменных мы с Вами поговорим в следующем уроке.

Если давать определение как в умных книжках, то

Переменная — содержит в себе адрес области ( ячейки ) памяти, которая выделяется в момент компиляции ( запуска ) программы, и при помощи переменной мы можем получить «доступ» к той области ( ячейки ) памяти и выполнить какие-то действия с данными, которые там находятся.

Поскольку область памяти выделяется в момент запуска программы, то в этой области памяти может что-то находится, поэтому опытные программисты всегда советуют после объявления переменной очищать её.

Все переменные в языке Паскаль ( Pascal — как Вам удобнее ) должны быть объявлены в разделе — var.

До этого мы говорили о структуре Паскаль, и там мы упоминали об этом разделе.

Поскольку язык Паскаль — строгий язык, то и объявление переменных должно быть соблюдено верно.

Мы должны сначала написать слово — var — это зарезервированное слово — поэтому его можно использовать только в объявлении переменных.

После слова var мы можем объявлять переменные, что мы имеем в виду под словом объявлять — в программе в разделе var, если он есть в программе, будут считываться все переменные и их типы, после в памяти будут выделены ячейки с определёнными типами, и нашим переменным будут присвоены адресы к этим ячейкам ( областям ) памяти, после чего в них можно будет записывать именно те данные, которые будут соответствовать типу переменных.

И так, насчёт объявления переменных, пишем var, после перечисляем названия переменных на английском языке через запятую, после последней переменной ставится двоеточие и пишется тип этих переменных. Вот пример:

var number, count, position: integer;

О типах переменных и о правописании названий переменных Вы узнаете в следующих уроках.

Если Вы захотите объявить и переменные другого типа, то с новой строки, всё в том же разделе пишите названия переменных и в конце новый тип:

var number, count, position: integer;
     name, city, region: string;

Тип Integer — целые числа, что значит мы сможем записывать в переменные такого типа только целые числа и при том есть ограничения по размеру этих чисел — например они не должны быть больше 36000 — более точный размер Вы узнаете в соответствующем уроке.

Тип string — строковые значения.

Давайте создадим программу, в которой мы считаем с клавиатуры число в переменную, и выведем её значение на экран:

Program z1;
var number: integer;
begin
 readln(number);
 writeln('Значение переменной: ',number); readln;

end.

Довольно простой пример.

С переменными можно так же производить арифметические выражения, точнее со значениями переменных.

Давайте например, считаем два числа, и выведем их сумму:

Program z2;
var number1, number2: integer;
begin
 readln(number1,number2);
 writeln(number1+number2);
 readln;
end.

Можно их сумму занести и в отдельную переменную.

Так как Паскаль — строгий язык, то есть и ограничения на операции с типами переменных — например, если у переменной тип Integer, то нельзя просто так производить операцию деления, нужно использовать операцию деления на цело — div.

В переменные, которые имеют тип — целые числа — нельзя заносить вещественные числа, для этих чисел есть свой тип — real.

Давайте напоследок напишем пример простенькой программы:

Program Proga;
var st:string;
     i:integer;
begin
 write('Введите слово: ');
 readln(st);
 for i:=1 to length(st) div 2 do
  if(st[i]<>st[length(st)-i+1])then begin
    writeln('Не палиндром');
    readln;
    exit;
  end;
 writeln('Палиндром');
 readln;
end.

Все использованные функции в этой программе мы объясним Вам в следующих уроках.

На занятии рассматриваются основные стандартные типы данных в Паскаль, понятие переменной и константы; объясняется, как работать с арифметическими операциями

Содержание:

  • Типы данных в Паскале
    • Целочисленные типы данных в Паскаль
    • Комментарии в Паскале
    • Вещественные типы данных в Паскаль
  • Приведение типов
  • Константы в Паскале
    • «Красивый» вывод целых и вещественных чисел
  • Арифметические операции в Паскале
    • Порядок выполнения операций
  • Стандартные арифметические процедуры и функции Pascal

Типы данных в Паскале

Паскаль — это типизированный язык программирования. Это означает, что переменные, в которых хранятся данные, имеют определенный тип данных. Т.е. программе напрямую надо указать, какие данные могут храниться в той или иной переменной: текстовые данные, числовые данные, если числовые — то целочисленные или дробные, и т.п. Это необходимо в первую очередь для того чтобы компьютер «знал», какие операции можно выполнять с этими переменными и как правильно их выполнять.

Например, сложение текстовых данных, или как это правильно называется в программировании — конкатенация — это обычное слияние строк, тогда как сложение числовых данных происходит поразрядно, кроме того, дробные и целые числа складываются тоже по-разному. То же самое касается и других операций.

Рассмотрим наиболее распространенные в 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
1
2
3
4
5
6
7
8
program a1;
var x,y:integer; {целочисленный тип}
    myname:string; {строковый тип}
begin
x:=1; y:=x+16;
myname:='Петр';
writeln ('имя: ',myname, ', возраст: ', y)
end.
1
2
3
4
5
6
7
8
program a1;
begin
  var x, y: integer; {целочисленный тип}
  var myname: string; {строковый тип}
  x := 1; y := x + 16;
  myname := 'Петр';
  print($'имя: {myname}, возраст: {y}')
end.
Результат: 
имя: Петр, возраст: 17

При использовании PascalABC.NET наиболее часто используются следующие целочисленные типы:

Тип Длина, байт Диапазон допустимых значений
integer 4 -2 147 483 648 .. 2 147 483 647
int64 8 -9 223 372 036 854 775 808 .. 9 223 372 036 854 775 807
BigInteger переменная неограниченный

Комментарии в Паскале

Обратите внимание на то, как используются комментарии в Паскале. В примере комментарии, т.е. служебный текст, который «не видим» для компилятора, заключаются в фигурные скобки {}. Обычно комментарии делаются программистами с целью пояснения фрагментов кода. Для однострочных комментариев можно использовать два слэша //:

{Очень простая программа
для вывода слова "Привет"}
begin
// вывод 
write('Привет');
end.

Задача 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

Тип real в Паскале — наиболее часто используемый из вещественных типов.

Выше были представлены простые типы данных в Паскаль, к которым относятся:

  • Порядковые
  • Целые
  • Логические
  • Символьные
  • Перечисляемые
  • Интервальные
  • Вещественные

Для вывода значений переменных вещественного типа обычно используется форматированный вывод:

  • в формате используется либо одно число, означающее число позиций, отводимых на это число в экспоненциальной форме;
  • p:=1234.6789;
    Writeln(p:12);  {_1.2346E+004}
  • либо два числа, первое из которых обозначает общий размер поля, отведенного под это число, второе — число знаков после запятой, т.е. точность.
  • p:=1234.6789;
    Writeln(p:6:2); {1234.68}

    Наряду с простыми типами в языке еще используются структурированные типы данных и указатели, которым будут посвящены последующие уроки по Паскалю.

    Приведение типов

    В pascalABC.Net в некоторых случаях можно значения одного типа присваивать переменным другого типа.

    Значения типов данных, которые занимают меньше памяти, можно присвоить переменным типа данных с бОльшей емкостью. Так, возможны следующие приведения:

    integer → int64
    int64  → real
    integer → BigInteger

    Пример использования операции приведения типов:

    var a := 10; // integer
    var b := 123456789012345; // int64
    var c := -3bi; // BigInteger
     
    var i := int64(a); // приведение integer → int64
    var x := real(b); // приведение int64  → real
    var p := BigInteger(a); // приведение integer → BigInteger

    Обратное приведение с помощью функций

    Обратное приведение, т.е. чтобы присвоить значение большей ёмкости переменной типа данных меньшей емкости, следует использовать функции округления. Например:

    real → integer

    Пример:

    ##
    var x := Sqrt(3); // корень квадратный из 3, тип real
    var a := Trunc(x); // приведение к integer с отсечением дробной части. рез-т 1
    var b := Round(x); // приведение к integer с округлением до ближайшего целого. рез-т 2

    Константы в Паскале

    Зачастую в программе заранее известно, что переменная будет принимать какое-то конкретное значение и не менять его на протяжении выполнения всей программы. В таком случае необходимо использовать константу.

    Объявление константы в Паскале происходит до объявления переменных (до служебного слова var) и выглядит следующим образом:

    Пример описания константы в Паскале:

    Pascal PascalABC.NET
    1
    2
    3
    4
    5
    6
    
    const x=17;
    var myname:string;
    begin
    myname:='Петр';
    writeln ('имя: ',myname, ', возраст: ', х)
    end.
    1
    2
    3
    4
    5
    
    const x = 17;
    begin
      var myname := 'Петр';
      print($'имя: {myname}, возраст: {x}')
    end.

    «Красивый» вывод целых и вещественных чисел

    Для того чтобы после вывода значений переменных оставались отступы, чтобы значения не «сливались» друг с другом, принято через двоеточие указывать какое количество символов нужно предусмотреть для вывода значения:

    Вывод целых чисел

    Вывод целых чисел

    Вывод вещественных чисел

    Вывод вещественных чисел

    Арифметические операции в Паскале

    ДЕЙСТВИЕ РЕЗУЛЬТАТ СМЫСЛ
    2 + 3 5 плюс
    4 — 1 3 минус
    2 * 3 6 умножить
    10 / 5 2 разделить
    10 ** 2 100 возведение в степень с результатом типа real
    17 div 5 3 целочисленное деление
    17 mod 5 2 остаток от целочисленного деления

    арифметические операции в паскале

    Порядок выполнения операций

    1. вычисление выражений в скобках;
    2. умножение, деление, div, mod слева направо;
    3. сложение и вычитание слева направо.

    порядок выполнения операций


    Канонический способ:

    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:

      1
      2
      3
      
      x:=1;
      inc(x); {Увеличивает x на 1, т.е. x=2}
      writeln (х)

      Более сложное использование процедуры inc:
      Inc(x,n) где x — порядкового типа, n — целого типа; процедура inc увеличивает x на n.

    • Аналогично работает процедура Dec в Паскале: Dec(x) — уменьшает x на 1 (декремент) или Dec(x,n) — уменьшает x на n.
    • Оператор abs представляет собой модуль числа. Работает следующим образом:
    • a:=-9;
      b:=abs(a); { b = 9}
    • Оператор div в паскале является часто используемым, так как целый ряд задач связан с действием деление нацело.
    • Остаток от деления или оператор mod в pascal тоже незаменим при решении ряда задач.
    • Заслуживающей внимания является стандартная функция odd Паскаля, которая определяет, является ли целое число нечетным. Т. е. возвращает true (истина) для нечетных чисел, false (ложь) для четных чисел.
    • Пример использования функции odd:

      1
      2
      3
      4
      
      begin
          WriteLn(Odd(5)); {True}
          WriteLn(Odd(4)); {False}
      end.
    • Функция exp в паскале возвращает экспоненту параметра. Записывается как exp(x), где x типа real.
    • Квадрат числа в Паскале вычисляется при помощи процедуры sqr.
    • Пример использования процедуры sqr в Pascal:

      1
      2
      3
      4
      5
      
      var x:integer;
      begin
      x:=3;
      writeln(sqr(x)); {ответ 9}
      end.
    • Операция возведение в степень в Паскале отсутствует как таковая. Но для того чтобы возвести в степень число можно использовать функцию exp.
    • Формула такая: exp(ln(a)*n), где а — число, n — степень (а>0).

      Однако в компиляторе pascal abc возведение в степень осуществляется значительно проще:

       WriteLn(Power(2,3)); {ответ 8}
    • Извлечь квадратный корень в Паскале можно при помощи процедуры sqrt.
    • Пример использования процедуры sqrt в Pascal:

      1
      2
      3
      4
      5
      
      var x:integer;
      begin
      x:=9;
      writeln(sqrt(x)); {ответ 3}
      end.

    Задача 6. Известны размеры спичечной коробки: высота — 12.41 см., ширина — 8 см., толщина — 5 см. Вычислить площадь основания коробки и ее объем

    (S=ширина * толщина, V=площадь*высота)

    [Название файла: L1task6.pas]

    Задача 7. В зоопарке три слона и довольно много кроликов, причем количество кроликов часто меняется. Слону положено съедать в сутки сто морковок, а кролику — две. Каждое утро служитель зоопарка сообщает компьютеру количество кроликов. Компьютер в ответ на это должен сообщить служителю общее количество морковок, которые сегодня нужно скормить кроликам и слонам.

    [Название файла: L1task7.pas]

    Задача 8. Известно, что x кг конфет стоит a рублей. Определите, сколько стоит y кг этих конфет, а также, сколько килограмм конфет можно купить на k рублей. Все значения вводит пользователь.

    [Название файла: L1task8.pas]

      

    В приведенных ниже примерах все функции имеют аргументы. Аргументы
    m и n имеют целочисленный тип,
    a и b – тип real,
    x и y – любой из этих типов.

    Abs(x) – возвращает абсолютное значение аргумента x;
    Ceil(x) - возвращает ближайшее целое, не меньшее, чем х;
    Floor(x) - возвращает ближайшее целое, не превышающее х;
    Frac(x) - возвращает дробную часть аргумента x;
    Max(x, y, …) – возвращает максимальное из значений x, y, …;
    Min(x, y, …) – возвращает минимальное из значений x, y, … ;
    Random(m) – возвращает случайное число из интервала [0 ; m-1];
    Random(a) – возвращает случайное число из интервала [0 ; a);
    Random(m, n) – возвращает случайное число из интервала [m ; n];
    Random(a, b) – возвращает случайное число из интервала [a ; b);
    Random2(m) – возвращает кортеж из двух случайных чисел в интервале [0 ; m-1];
    Random2(a) – возвращает кортеж из двух случайных чисел в интервале [0 ; a);
    Random2(m, n) – возвращает кортеж из двух случайных чисел в интервале [m ; n];
    Random2(a, b) – возвращает кортеж из двух случайных чисел в интервале [a ; b);
    Random3(m) – возвращает кортеж из трех случайных чисел в интервале [0 ; m-1];
    Random3(a, b) – возвращает кортеж из трех случайных чисел в интервале [a ; b);
    Round(x) - возвращает округленное до целых по правилам арифметики значение типа integer;
    Round(x, n) - возвращает значение х, округленное до n знаков в дробной части;
    Sign(x) – возвращает -1 при x < 0, 0 при x = 0 и 1 при x > 0;
    Sin(x) – возвращает sin(x) типа real;
    Sqr(a) – возвращает a2;
    Sqr(m) – возвращает m2 типа int64;
    Sqrt(x) – возвращает √x типа real;
    Trunc(a) – возвращает целую часть значения a того же типа
    

    Просмотров 1к. Обновлено 26 ноября 2020

    Урок из серии: «Язык программирования Паскаль»

    На этом уроке мы остановимся на целых типах данных и алгоритмах их обработки .

    Определим для них:

    1. Зарезервированные слова для описания.
    2. Диапазон допустимых значений.
    3. Набор операций.
    4. Формат внутреннего представления.


    В таблице показаны  5 стандартных целых типов, которые отличаются форматами и диапазонами допустимых значений.

    Тип

    Диапазон значений

    Длина (байт)

    shortint -128..127 1
    integer -32768..32767 2
    longint -2147483648.. -2147483647 4
    byte 0..255 1
    word 0..65535 2

    Для работы с целыми числами используются арифметические операции:

    1. «+» — сложение;
    2. » * » — умножение;
    3. » — » вычитание;
    4. div — целочисленное деление;
    5. mod — получение остатка от целочисленного деления.

    Урок 3. Целые типы данныхВ языке Паскаль операция возведения в степень отсутствует.

    Чтобы остаться в рамках множества целых чисел,  вместо обычного математическое деление «/» вводятся операции: »div» — целая часть от деления; »mod» — остаток от деления.

    Для работы с целыми типами используются функции, результат которых — целое число.

    Функция

    Назначение

    abs(n) Абсолютная величина n
    sqr(n) Квадрат числа n
    trunc(x) Получение целой части вещественного числа x
    round(x) Округление до целого вещественного числа x

    Содержание

    1. Оператор присваивания
    2. Ввод данных
    3. Вывод данных
    4. Проверь себя!

    Оператор присваивания

    Для присваивания значения переменной используется оператор присваивания.

    Арифметический оператор присваивания на Паскаль имеет следующий  формат:

    числовая переменная:= арифметическое выражение

    Алгоритм выполнения оператора:

    1. Вычисляется значение выражения, стоящего справа от знака присваивания.

    2. Полученное значение присваивается переменной , стоящей в левой части.

    Следует знать:

    Урок 3. Целые типы данныхОператор присваивания используется для изменения значений переменных, в том числе и для вычислений по формулам.

    Урок 3. Целые типы данныхТип результата, полученного при вычислении выражения должен быть совместим по типу с переменной, которой он присваивается.

    Ввод данных

    Для организации вывода и вывода  данных в языке Паскаль предусмотрены следующие операторы: read, readln, write и writeln.  

    Названия означают «читай», «читай строку» (read line), «пиши», «пиши строку» (write line) соответственно.

    Ввод данных — это передача информации от внешних устройств в оперативную память. Обычно вводятся исходные данные для решения задачи.

    Оператор ввода можно записать в одной из следующих форм:

    read(x1, x2, …, xn);

    readln(x1, x2, …, xn);

    read;

    где x1, x2, …, xn — список ввода, содержащий имена переменных, значения которых будут вводится.

    Например:

    var x, y: integer;

    readln(x, y);

    Следует знать:

    Урок 3. Целые типы данныхС помощью одного оператора ввода можно вводить значения нескольких переменных. В качестве разделителя при вводе значений  можно использовать  пробел либо нужно нажимать клавишу Enter после ввода каждого из значений.  

    Урок 3. Целые типы данныхТип данных, вводимых во время работы программы, должен  соответствовать типам переменных, указанных в списке ввода. В случае несоответствия типов программа завершает работу и на экран выводится сообщение об ошибке.

    Вывод данных

    Вывод данных — обратный процесс, когда данные передаются из оперативной памяти на внешние носители (экран, принтер, файл на диске). Обычно вывод осуществляется в конце программы, выводятся результаты решения задачи.

    Оператор вывода  записывается водной из следующих форм:

    write(y1, y2, …, yn);

    writeln(y1, y2, …, yn);

    writeln;

    где y1, y2, …, yn — список вывода.

    Например:

    writeln(‘Сумма равна: ‘, sum);

    Следует знать:

    Урок 3. Целые типы данныхСписок вывода может содержать константы, переменные или выражения. Число параметров произвольно.

    Урок 3. Целые типы данныхИз констант наиболее часто выводят строки текста (строковые константы заключаются в апострофы).

    Урок 3. Целые типы данныхЕсли в списке вывода  стоит имя переменной, то на экран выводится значение переменной.

    Урок 3. Целые типы данныхЕсли в списке вывода  стоит выражение, то на экран выводится вычисленное значение выражения.

    Урок 3. Целые типы данных Оператор writeln аналогичен оператору write. Отличие заключается в том, что после вывода последнего элемента из списка, курсор автоматически переходит в начало новой строки. 

    Урок 3. Целые типы данныхОператор writeln; (без параметров) переводит курсор в начало следующей строки. Таким способом можно, например, отделять результаты работы программы друг от друга одной или несколькими пустыми строками.

    Урок 3. Целые типы данныхПример 1. Поменять местами значения переменных x и y.

    Решение.

    Нам нужно изменит значения переменных. Для этого можно использовать оператор присваивания.

    Как легко проверить, к цели не приводит выполнение следующих операторов:

    x:=y; {переменной x присвоить, значение переменной y}
    y:=x; {переменной y присвоить значение переменной х}

    Проблема в том, что присваивая переменной x новое значение, мы теряем её старое значение. Нужно сначала сохранить старое значение переменной, а затем присвоить её новое значение. Задачу можно решить с помощью вспомогательной переменной.

    Первый способ:

    Z:= x; X:=y; Y:=z

    Второй способ:

    Z:=y; y:=x; x:=z

    program _1;
    var x, y, z: integer;
    begin
       writeln('Введите два числа: ');
       readln(x,y);
       z:=x;
       x:=y;
       y:=z;
       writeln(x, ' ',y);
    end.

    Урок 3. Целые типы данныхПример 2. Найти целую часть и остаток от деления целого числа a на целое число b.

    Решение.

    program _2;
     var a, b, p1, p2: integer;
     begin
        writeln('Введите a, b: ');
        readln(a,b);
        p1:=a div b;
        p2:=a mod b;
        writeln('Целая часть: ',p1, ' Остаток:  ',p2);
     end.

    Урок 3. Целые типы данныхПример 3. Найти сумму цифр заданного трехзначного числа.

    Решение.

    Сначала научимся разбивать число на отдельные цифры, составляющие его десятичную запись. Это нетрудно сделать, поняв суть позиционной записи: в десятичной записи любого числа последняя цифра показывает количество единиц.

    Итак, разделив число на 10, мы получим в остатке его последнюю цифру, а в частном — число, которое получается из исходного вычеркиванием последней цифры. Повторив эту операцию несколько раз, можно по очереди отделить от числа все цифры.

    Алгоритм нахождения цифр числа:
    1. Находим последнюю цифру в записи числа. Для этого находим остаток от деления заданного числа на 10 с помощью операции mod.  Сохраняем её.

    2. Вычеркиваем  последнюю цифру. Для этого присвоим новое значение числу, разделив старое значение нацело на 10 помощью опрерации div. Число станет двузначным.

    3. Находим последнюю цифру теперь уже двузначного числа. Сохраняем её.

    4. Зачеркиваем последнюю цифру.  Остается первая цифра.

    Дважды повторяются действия нахождения остатка и деление нацело.  Если цифр в числе будет больше, нужно организовать цикл.

     program _3;
     var a, c1, c2, c3, s:integer;
     begin
        writeln('Введите число: ');
        readln(a);
        c3:=a mod 10; a:=a div 10;
        c2:=a mod 10; c1:= a div 10;
        s:=c1+c2+c3;
        writeln('Сумма равна: ',s);
     end.

    Тест

    Проверь себя!

    До встречи в следующем уроке.

    Добавить комментарий