Как обозначаются логические данные в паскале
Перейти к содержимому

Как обозначаются логические данные в паскале

  • автор:

Типы данных в языке программирования Паскаль

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

Тип данных, задаваемый при их описании, однозначно определяет форму внутреннего представления, диапазон допустимых значений и множество возможных операций.

Рассмотрим классификацию типов данных, придерживаясь систематизации, принятой в PascalABC.Net.

Простые типы

К простым типам в PascalABC.Net относят целые и вещественные типы, логический, символьный, перечислимый и диапазонный тип. Все простые типы за исключением вещественного называются порядковыми типами.

Целые типы

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

Таблица 1. Целые типы данных

Целые типы данных в Паскаль

Вещественные типы

Существует несколько вещественных типов данных, которые отличаются точностью и диапазоном представления (см. Таблица 2). Точность вещественного числа определяется длиной мантиссы, а диапазон значений – длиной порядка.

Таблица 2. Вещественные типы данных

Вещественные типы в Паскаль

Символьный тип

Символьный тип служит для представления элементов из допустимого набора (для реализации PascalABC.Net — кодировка Unicode). Для обозначения типа данных используется ключевое слово char . Под каждый символ в PascalABC.Net отводится 2 байта (в других реализациях языка Паскаль отводится 1 байт, поскольку в качестве элементов набора используется расширенная таблица ASCII).

Логический тип

Для обозначения логического типа используется ключевое слово boolean . Множество значений этого типа включает два значения: false (ложь) и true (истина). Под величину логического типа отводится в памяти 1 байт.

Перечисляемый тип

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

type typeName = (value1, value2, . valuen);

Диапазонный тип

Диапазонный (интервальный) тип применяется в случае, если необходимо использовать подмножество значений целого, символьного или перечислимого типа.

  • var
  • range: -100..100;
  • intCh: ‘a’..’z’;

Тип, на основе которого строится подмножество, называется базовым. Занимаемое место в памяти машины значениями диапазонного типа определяется используемым базовым типом.

Структурированные типы

К структурированным типам в PascalABC.NET относят массивы, записи, множества и файлы. Эти типы данных будут рассматриваться далее в соответствующих уроках.

Copyright © 2014-2021, Урок информатики
Все права защищены

Условный оператор

Проверьте истинность второго отношения при подстановке следующих значений:

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

Примечание. Название “булевы” произошло от имени математика Джорджа Буля, разработавшего в XIX веке булеву логику и алгебру логики.

Определение. Переменная, которая может принимать одно из двух значений: True (правда) или False (ложь), называется булевой (логической) переменной. Например,

К:=True;
Flag:=False;
Second:=a+sqr(x)>t

Задача. Вычислить значение модуля и квадратного корня из выражения (х-у).

Для решения этой задачи нужны уже знакомые нам стандартные функции нахождения квадратного корня — Sqr и модуля — Abs. Поэтому Вы уже можете записать следующие операторы присваивания:

Koren:=Sqrt(x-y);
Modul:=Abs(x-y)

В этом случае программа будет иметь вид:

Program Znachenia;
Uses
Crt;
Var
x, y : integer;
Koren, Modul : real;
Begin
ClrScr;
write (‘Введите значения переменных х и у через пробел ‘);
readln (x, y);
Koren:=Sqrt(x-y);
Modul:=Abs(x-y);
write (‘Значение квадратного корня из выражения (х-у) равно ‘, Koren);
write (‘Значение модуля выражения (х-у) равно ‘, Modul);
readln;
End.

Казалось бы, задача решена. Но мы не учли области допустимых значений для нахождения квадратного корня и модуля. Из курса математики Вы должны знать, что можно найти модуль любого числа, а вот значение подкоренного выражения должно быть неотрицательно (больше или равно нулю).

Поэтому наша программа имеет свою допустимую область исходных данных. Найдем эту область. Для этого запишем неравенство х-у>=0, то есть х>=у. Значит, если пользователем нашей программы будут введены такие числа, что при подстановке значение этого неравенства будет равно True, то квадратный корень из выражения (х-у) извлечь можно. А если значение неравенства будет равно False, то выполнение программы закончится аварийно.

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

  1. х=23, у=5;
  2. х=-5, у=15;
  3. х=8, у=8.

Каждая программа, насколько это возможно, должна осуществлять контроль за допустимостью величин, участвующих в вычислениях. Здесь мы сталкиваемся с разветвлением нашего алгоритма в зависимости от условия. Для реализации таких условных переходов в языке Паскаль используют операторы If и Case, а также оператор безусловного перехода Goto.

Рассмотрим оператор If.

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

если х>=у,
то вычислить значение квадратного корня,
иначе выдать на экран сообщение об ошибочном введении данных.

Запишем его с помощью оператора If. Это будет выглядеть так.

if x>=y
then
Koren:=Sqr(x-y)
else
write (‘Введены недопустимые значения переменных’);

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

В общем случае полная форма конструкции условного оператора имеет вид:

Условный оператор работает по следующему алгоритму.

Сначала вычисляется значение логического выражения, расположенного за служебным словом IF. Если его результат истина, выполняется , расположенный после слова THEN, а действия после ELSE пропускаются; если результат ложь, то, наоборот, действия после слова THEN пропускаются, а после ELSE выполняется .

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

Если в качестве оператора должна выполниться серия операторов, то они заключаются в операторные скобки begin-end. Конструкция Begin . End называется составным оператором.

if
then
begin
оператор 1;
оператор 2;
.
end
else
begin
оператор 1;
оператор 2;
.
end;

Определение. Составной оператор — объединение нескольких операторов в одну группу. Группа операторов внутри составного оператора заключается в операторные скобки (begin-end).

begin
оператор 1;
оператор 2;
end;

С учетом полученных знаний преобразуем нашу программу.

Program Znachenia;
Uses
Crt;
Var
x, y : integer;
Koren, Modul : real;
Begin
ClrScr;
write (‘Введите значения переменных х и у через пробел ‘);
read (x, y);
if x>=y
then
begin
Koren:=Sqr(x-y);
Modul:=Abs(x-y);
write (‘Значение квадратного корня из выражения (х-у) равно ‘, Koren);
write (‘Значение модуля выражения (х-у) равно ‘, Modul);
end
else
write (‘Введены недопустимые значения переменных’);
readln;
End.

Составным оператором является и такой оператор

begin
S:=0;
end.

Cимвол “;” в данном случае разделяет оператор присваивания S:=0 и пустой оператор.

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

Например, составной оператор

включает лишь один пустой оператор.

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

Внимание! Перед служебным словом Else разделитель (точка с запятой) не ставится.

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

    Каждое описание переменной и определение константы заканчиваются точкой с запятой.

Рассмотрим еще один пример.

Задача. Вывести на экран большее из двух данных чисел.

Program Example1;
Var
x, y : integer;
Begin
writeln(‘Введите 2 числа ‘);
readln(x,y);
if x>y
then
writeln (x)
else
writeln (y);
readln;
End.

Можно также использовать и сокращенную (неполную) форму записи условного оператора. Эта форма используется тогда, когда в случае невыполнения условия ничего делать не надо.

Неполная форма условного оператора имеет следующий вид.

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

Задача. Составить программу, которая, если введенное число отрицательное, меняет его на противоположное.

Program Chisla;
Var
x : integer;
Begin
writeln(‘Введите число ‘);
readln(x);
if x then
x:=-x;
writeln (x);
readln;
End.

Логические выражения и операции. Булевый тип данных

Для того, чтобы программа была не линейной (т.е. в зависимости от ситуации выполнялись разные инструкции) в языках программирования используются логические выражения, результат которых может быть либо правдой ( true ), либо ложью ( false ). Результат логических выражений обычно используют для определения пути выполнения программы.

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

В Паскале предусмотрены следующие операторы отношений:

  • меньше: x < y
  • больше: x > y
  • равно: x = y
  • не равно: x <> y
  • меньше или равно: x
  • больше или равно: x >= y

Булевы типы

Результатом логического выражения всегда является булево (логическое) значение. Булев тип данных ( boolean ) может принимать только два значения: true (истина) или false (ложь). Эти величины упорядочены следующим образом: false < true .

var x, y: boolean; begin x := true; y := false; writeln('x = ', x); writeln('y = ', y); writeln('x < y = ', x < y); end.
x = TRUE y = FALSE x < y = FALSE

Операции and , or , not (применяемые к булевским операндам) дают булевские значения.

Это значит, что данные булевого типа являются не только результатом операций отношения, но и могут выступать в роли операндов операции отношения. Также к ним можно применять функции ord , succ , pred , процедуры inc и dec .

Значение типа boolean занимает в памяти 1 байт.

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

Булевый тип данных в Паскаль

Кроме типа boolean в Pascal введены еще три булевых типа — bytebool (занимает 1 байт), wordbool (занимает 2 байта) и longbool (занимает 4 байта).

Для всех булевых типов значению false соответствует 0, а значению true — любое ненулевое значение. Логические переменные, принадлежащие разным булевым типам, ведут себя по-разному при выполнении над ними операций. Ниже приводится пример, реализованный на языке FreePascal (в комментариях отображается результат).

var b:boolean; wb:wordbool; begin b:= false; b:= pred(b); writeln(b,' ',ord(b)); // TRUE 255 writeln(b=true); // TRUE wb:= false; wb:= pred(wb); writeln(wb,' ',ord(wb)); // TRUE -1 b:= true; b:= succ(b); writeln(b,' ',ord(b)); // TRUE 2 wb:= true; wb:= succ(wb); writeln(wb,' ',ord(wb)); // FALSE 0 end.

Логические операции

С помощью логических операторов можно формировать сложные логические выражения. Логические операторы часто применяются по отношению к простым логическим выражениям.

В языке программирования Pascal предусмотрены следующие логические операции:

    Конъюнкция (логическое умножение, пересечение) - and . Выражение a and b дает значение true только в том случае, если a и b имеют значение true . Во всех остальных случаях значения выражения a and b дает false .

true and true = true true and false = false false and true = false false and false = false
true or true = true true or false = true false or true = true false or false = false
not true = false not false = true
true xor true = false true xor false = true false xor true = true false xor false = false

Последовательность выполнения логических операторов: not, and, or.

В языке Паскаль сначала выполняются логические операторы ( and , or , xor , not ), а уже потом операторы отношений ( > , >= , < , , = ), поэтому не нужно забывать расставлять скобки в сложных логических выражениях.

Логические операции в Pascal

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

Стандартные функции, возвращающие булевые значения

  • odd(x) = true, если x нечетный ( x целый);
  • eoln(x) = true, если встретился конец строки текстового файла x ;
  • eof(x) = true, если встретился конец файла x .

В остальных случаях эти функции принимают значение false .

Pascal-Паскаль

Программирование. Логические типы данных Pascal-Паскаль

  • Скачено бесплатно: 27481
  • Куплено: 414
  • Pascal-Паскаль->Программирование. Логические типы данных Pascal-Паскаль

Программирование. Логические типы данных Pascal-Паскаль

Логические типы данных Pascal-Паскаль

В Турбо Паскале логический тип данных носит название BOOLEAN. Значением логического типа может быть одна из двух констант FALSE (ложь) или TRUE (истина). Для них справедливы правила:

Ord(false)=0
Ord(true)=1
False Succ(false)=true
Pred(true)=false

Все реализации языка Pascal, в том числе и Turbo Pascal, вплоть до версии 6.0 содержали только один логический тип данных Boolean, элементы которого могут принимать лишь два логических значения: True (истина) и False (ложь). В Turbo Pascal версии 7.0 добавлены еще три логических типа данныхByteBool, WordBool и LongBool.

Название логического типа данных Значению False соответствует Значению True соответствует Размер памяти для логического типа данных
Boolean Число 0 1 1 байт
ByteBool Число 0 Любое число, отличное от 0 1 байт
WordBool Число 0 в обоих байтах 2 байта
LongBool Число 0 во всех байтах 4 байта

Отметим, что новые логические типы данных были введены для обеспечения совместимости разрабатываемых программ с Windows, в которой значению False соответствует 0, а значению True – любое, отличное от 0, число.

Логические переменные должны быть описаны предложением:

Var <имя_переменной>: boolean;

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

Пример переменных с булевым значением

Логические выражения

Логические выражения (условия) – это выражения, которые могут принимать лишь одно из двух значений: true (истина) или false (ложь). Для построения логических выражений используются операции отношения, которые обозначаются знаками: = (отношение на равенство), <> (отношение на неравенство), < (отношение меньше), >(отношение больше), = (отношение больше или равно).

Сложные условия составляются из простых с помощью логических операций: and (логическое «И»), or (логическое «ИЛИ») и not (логическое «НЕ»). При составлении сложных условий операнды логического выражения берутся в скобки (это важно!).

Пример логических выражений:

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

Программирование

Исходники Pascal (127)

Справочник

Справочник по паскалю: директивы, функции, процедуры, операторы и модули по алфавиту

Счетчики

2008—2024 © pascal.helpov.net | All Rights Reserved

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *