68994

Логічний та рядковий типи даних

Лекция

Информатика, кибернетика и программирование

Логічні змінні можуть мати одне з двох значень: true (істинне) або false (хибне). Як і maxint, ці значення належать до наперед визначених сталих, тобто їх не треба описувати. Логічні змінні найчастіше використовують для керування послідовністю виконання операторів програми.

Украинкский

2014-09-28

52.5 KB

0 чел.

Лекція № 4

Тема: Логічний та рядковий типи даних

План заняття

  1.  Операції порівняння логічного типу
  2.  Функції логічного типу
  3.  Символьний тип даних
  4.  Функції для роботи з символьним типом

Операції порівняння логічного типу

Логічні змінні можуть мати одне з двох значень: true (істинне) або false (хибне). Як і maxint, ці значення належать до наперед визначених сталих, тобто їх не треба описувати. Логічні змінні найчастіше використовують для керування послідовністю виконання операторів програми.

Є три логічні операції, які, будучи застосовані до логічних операндів, приводять до результату типу boolean:

  •  and - логічна кон'юнкція;
  •  or- логічна диз'юнкція;
  •  not - логічне заперечення.

У ТР є ще одна операція: хоr - додавання за модулем 2. Наприклад, якщо описати

var

х, у, z: boolean;

то можна записувати вирази, які будуть мати логічні значення

x and у or z

not  у and x

х and (у or z)

Послідовність виконання логічних операцій така: not, and, or. Для її зміни використовують дужки.

Правила виконання логічних операцій (х і у- логічні змінні) наведені в табл.

Таблиця істинності логічних операцій

х

у

not x

x and у

х or у

x xor y

true

true

false

false

true

false

true

false

false

false

true

true

true

false

false

false

true

true

true

false

false

true

true

false

Логічний (булів) результат дають також операції порівняння: <, <=, =, <>, >=, >, in. Операнди цих операцій можуть бути дійсного, цілого, а також логічного типу. Значення логічного типу можна порівнювати, оскільки прийнято, що false<true.

До операндів дійсного типу не варто застосовувати операцію "дорівнює", оскільки умова може не виконуватися внаслідок неточного відображення дійсних чисел у пам'яті комп'ютера, а також помилок заокруглення під час обчислення виразів дійсного типу. Тому замість а=b ліпше записати abs(a-b)<E, де Е - деяке мале значення, що залежить від порядку значень а і b. Якщо їхній порядок невідомий, то Е є функцією одного з них, наприклад:

abs(a-b)<abs(a*1E-6) - порівняння з точністю до 0.000001.

Операції порівняння мають нижчий пріоритет виконання, ніж логічні операції, тому у разі потреби використовують дужки. Наприклад (цифрами позначена послідовність виконання операцій):

                                         1      6    4      2       5       3

 (-3>=5) or not (7<9) and (0<=3)

Функції логічного типу

Функції eoln і eof дають бульові значення. Їхніми параметрами можуть бути імена файлів. Якщо параметра нема, то за замовчуванням мають на увазі файл input (файл уведення).

Функція eoln дає true, якщо з файлу введення надійшов кінець рядка; в усіх інших випадках - false.

Функція eof дає true, якщо файл перебуває в стані "кінець файлу", тобто процес дійшов до кінця, в інших випадках - false. Спроба прочитати щось з файлу після того, як значення функції стало true, призведе до помилки. Тому перед читанням треба перевіряти кінець файлу:

if eof

then write('кінець файлу')

else read(sym);

Функція odd має цілочисловий аргумент; odd(i) дає true, якщо і непарне, і false, якщо і - парне.

Якщо х - змінна логічного типу, то оператор процедури write(x) виведе TRUE або FALSE, залежно від значення змінної.

Процедура read не може мати аргументів булевого типу.

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

Значенням змінної символьного типу є символ - елемент деякої скінченної та упорядкованої множини символів. Така множина є в кожній обчислювальній системі, оскільки вона потрібна для обміну інформацією з системою. На жаль, нема єдиної стандартної множини символів, різноманітні системи відрізняються як самими символами, так і порядковими номерами. Однак стандартом мови Паскаль передбачено такі властивості множин:

1) кожний символ має порядковий номер;

2) десяткові цифри впорядковані за зростанням і йдуть одна за одною;

3)  букви впорядковані за алфавітом, їхні номери не обов'язково йдуть підряд.

Найчастіше застосовують множину символів ASCII (American Standard Code for Information Interchange).

У програмах символьні сталі, що мають значення, записують між одинарними лапками: 'а' '*' '3.....(апостроф ставлять двічі).

Функції для роботи з символьним типом

Для відображення заданої множини символів номери і навпаки є дві функції:

ord(C) - дає порядковий номер символу С  в заданій упорядкованій множині символів;

chr(i) - дає символ з номером і в цій множині. Нехай С1 і С2 мають символьний тип

var

С1, С2: char;

Тоді якщо С1<>С2, то ord(C1)<>ord(C2).

Над символьними змінними можна виконувати операції порівняння, причому С1<С2 еквівалентне ord(C1)<ord(C2).

З останньої властивості випливає, що ord(T), ord('2'), ..., ord('9') - зростаюча послідовність чисел, що йдуть підряд. Звичайно в множинах ord('0')<>0.

Обернена до ord функція chr має цілий аргумент, видає символьне значення і визначена тільки в діапазоні значень функції ord. Наприклад, нехай

var

і: integer;

тоді chr(i) буде визначене, якщо є символ sym такий, що ord(sym)=i. У цьому випадку chr(i)=sym. Зокрема, якщо

var

і: integer;

і відомо, що 0 < c f < 9, то відповідним символом буде chr(cf+ord('0')). Символи з вхідного файлу читають за допомогою стандартної процедури read (пропусками ігнорують, на відміну від уведення цілих і дійсних чисел):

var

sym: char;

read (sym);

Оператором процедури write(sym) записують символ у вихідний файл. Зокрема, оператор write(sym: р), де р - ширина поля, виведе пропуски в кількості р-1, і після того - символ sym;

Оператор write(' ': р) виведе пропуски в кількості р.


 

А также другие работы, которые могут Вас заинтересовать

42429. Проектирование FM 364 KB
  Ячейка выбираеться по адресу и записываеться по сигналу WR Синхросигнал для ячейки за адресом 000000 Синхросигнал для ячейки за адресом 011001 Синхросигнал для ячейки за адресом 101111 последней 48 ячейки Проектирование однорозрядного триггера: Проектирование разрешения выдачи сигнала: У нас будет три схемы разрешения управляющего сигнала. Схема iтой ячейки FM Общая схема FM.
42430. Проектирование AU 284.5 KB
  Оценить сложность полученной схемы и её быстродействие.C 0100 X 1 C 0000 0000 0000 5 R2 = R2R3 0100 1 0 X 0001 0010 0001 6 R1 = R1 1 0110 1 0 X 0000 xxxx 0000 7 R4=R41 0110 1 0 X 0011 xxxx 0011 2 R5=R1xorR3 0001 0 0 X 0000 0010 0100 Коды операций из 2 лабораторной: 0 0000 P 0011 P 1 0110 P Q 0100 P Q 0001 CIопределяет арифметическая операция или логическаяучитывание переноса F3F2F1F0 код операции F разрешение левого сдвига D сдвигаемый разряд Схема арифметического...
42431. Проектирование СPU 410 KB
  Сигнал F управляет сдвигом ICTR счетчик команд т. длина команды 24 бит счётчик увеличивается на 3 учитывая адрес RM 10битный и счётчик такой же разрядности. IRG регистр команд состоит из 3 байт COP блок управления операциями формирует управляющие сигналы Сi CCRG регистр признаков: Сперенос О переполнение S знак Z ноль. Кодирование и структура команд CPU O LO 4 бита кода МО LSM 4 бита F0F1F2F3 для LSM 2 4битных адреса операндов FM 23 x 24 x 24 = 211 разновидностей операций FR RF 1 бит для направления...
42432. Проектирование СOP 423.5 KB
  В таком случае, COP должен содержать набор логических элементов И-ИЛИ, DC кодов ОР и CTR тактов. Далее выходы И собираются на ИЛИ в соотвествии с формулами для управляющих сигналов. Предполагается, что произведения T2 JC и T2 JC Cc формируются в 2 этапа: 1) в схеме получают сигнал T2 JC. 2) после опроса СС формируют сигналы T2 JC и T2 JC CС.
42433. Соотношение понятий социализации, воспитания и образования. Особенности социализации различных возрастных групп 15.7 KB
  Процесс воспитания – целенаправленный процесс, его цель – накопление ребенком необходимого для жизни в обществе социального опыта, формирование принимаемой обществом системы ценностей и включение детей в мировую и отечественную культуры.
42434. ИЗУЧЕНИЕ СВОБОДНЫХ КОЛЕБАНИЙ ПРУЖИННОГО МАЯТНИКА 482.5 KB
  Рассмотрим простейшую колебательную систему: груз массой m, подвешенный на пружине. Если груз, прикрепленный на пружине, оттянуть вниз на некоторое расстояние, а затем отпустить, то он придет в колебательное движение. Возвращение груза в положение равновесия происходит под действием деформированной пружины, т.е. под действием упругой силы
42435. ИЗУЧЕНИЕ ЗАКОНОВ ДВИЖЕНИЯ ЭЛЕКТРОНА В ЭЛЕКТРИЧЕСКОМ И МАГНИТНОМ ПОЛЯХ 279.5 KB
  Начальные скорости электронов эмиссии различны. Это сказывается на характере спада анодного тока. Из-за неодинаковости начальных скоростей электронов радиусы кривизны их траекторий при одних и тех же величинах индукции магнитного поля различны. Поэтому резкий спад анодного тока происходит не при одном значении, а в достаточно широком интервале значений магнитной индукции.
42436. ИЗУЧЕНИЕ ПЕРЕХОДНЫХ ПРОЦЕССОВ ПРИ ЗАРЯДКЕ И РАЗРЯДКЕ КОНДЕНСАТОРА В ЭЛЕКТРИЧЕСКОМ «R – C» КОНТУРЕ 559 KB
  Расчёт общего вида зависимости напряжения на конденсаторе от времени 5 2. Ветвью называется участок цепи в котором ток в любой данный момент времени имеет одинаковую величину. Расчёт электрических процессов в любой цепи требует умения вычислять зависимости от времени токов в ветвях и напряжения на элементах входящих в...
42437. ЭКСПЕРИМЕНТАЛЬНОЕ ИЗУЧЕНИЕ ЯВЛЕНИЯ ВЗАИМНОЙ ИНДУКЦИИ 272 KB
  Если контур в котором индуцируется ЭДС состоит не изодного витка а из N витков например представляет собойсоленоид то поскольку витки соединяются последовательно будет равна сумме ЭДС индуцированных в каждом витке в отдельности: Величину называют потокосцеплением или полным магнитным потоком. Если поток пронизывающий каждый из витков одинаков то ЭДС индуцируемая в сложном контуре определяется формулой:...