Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Основы программирования на языке Паскаль. Основные понятия алгоритмического языка Паскаль. Учебное пособие для самостоятельной работы по дисциплине «И

.pdf
Скачиваний:
0
Добавлен:
12.08.2026
Размер:
911 Кб
Скачать

Имя файла состоит из двух слов: имени и расширения, разделяемых точкой.

Пример: gg. pas

gg. exe

d1. dat.

Текстовый файл в ТР – это совокупность строк переменной длины. Доступ к каждой строке возможен лишь последовательно, начиная с первой.

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

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

Строка. В Турбо Паскале строковый тип STRING – последовательность символов произвольной длины (до 255 символов). У типа-строки в квадратных скобках может быть указан его размер от 1 до 255. Если размер строки не указан, то он считается равным 255.

Пример: Var

FAM: STRING [20];

TEL: STRING[12];

MAXSTR: STRING; {строка в 255 символов}

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

Например, ’A’, ’Х’, ’I’ – символьные константы;

’Шевалье д’’Артаньян’ – строка, при этом апостроф внутри строки записывается дважды.

2.3.Простейшие конструкции языка Паскаль

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

Константы

Константами называются элементы данных программы, значения которых не меняются в процессе ее выполнения.

Константы могут иметь один из рассмотренных типов:

1)Целые содержат лишь знак и цифры (знак + в записи константы может быть опущен);

2)Вещественные содержат в записи десятичную точку и/или показатель степени, следующий за символом Е, который заменяет число 10;

21

Пример: CONST x=-0.5; y=1.0; z=-1Е-5

w=7.5е15;

Для некоторых констант в программе определены стандартные име-

на, например, PI (π=3.1415926536….);

3)Логические могут принимать только два значения: TRUE или FALSE;

4)Символьные записываются литерой, заключенной с двух сторон в одиночные кавычки (апострофы), например, ′В′, ′6′, ′ * ′;

5)Текстовые (строковые) записываются последовательностью символов (текстом), заключенной с двух сторон в апострофы, например, ′x=′, ′параметр z′, ′матрица А′.

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

CONST

K=100;

N=15;

G=9.81; R= -1.0Е19 LMP=′ Р ′; B=TRUE;

Вданном примере константы с именами K и N имеют целый тип и числовые значения соответственно 100 и 15, константы G и R – вещественного типа, константа LMP – символьного типа, соответствует символу P и константа B – логического типа, имеет значение TRUE.

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

CONST

a=35.91; b= -а; c=2.5+3*а;

Если программа не содержит констант, то раздел CONST в описании не приводится.

Переменные

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

22

менные с индексом. Простая переменная записывается в программе своим именем (идентификатором). Напомним, что имя переменной – это последовательность букв и цифр, начинающаяся с буквы, например: XMAX, REZ, K3, SUMMA. В качестве примеров неправильной записи имен переменных можно привести следующие записи: 5М, R34.5, 13К, К 13.

Также как и константа, все переменные, используемые в программе, должны быть описаны в соответствующем разделе описания. Раздел описания переменных начинается с ключевого слова VAR (variable), после которого перечисляются через запятую имена переменных, имеющих один и тот же тип. Перечисление заканчивается двоеточием, после чего записывается тип этих переменных и ставится точка с запятой (разделитель). Далее идет перечисление остальных переменных, имеющих другие типы, например,

VAR KOL, IMAX: INTEGER;

V, Y: REAL;

C, D: CHAR;

F:BOOLEAN;

Вданном примере переменные с именами KOL, IMAX описаны как переменные целого типа и могут принимать в программе только целые значения. Переменные с именами V, Y имеют вещественный тип, их возможные значения – числа, имеющие дробную часть. Переменные с именами C, D – символьного типа и могут принимать значение любого символа из набора символов данной ЭВМ. Переменная F имеет логический тип и в программе может иметь значение TRUE или FALSE.

По инструкциям, указанным в разделе описаний, ЭВМ до выполнения программы выделит в оперативной памяти для каждой описанной переменной или константы одну или несколько ячеек, нужных для хранения данных описанного типа. В ячейки, отведенные для констант, сразу будут записаны их значения. В ячейки, зарезервированные для переменных, их значения будут записываться в ходе выполнения программы, причем ЭВМ пропустит в ячейку только те значения, которые определены для данного типа. Так, например, при попытке дать переменной IMAX значение 3.5 будет выдано сообщение об ошибке, так как в IMAX может быть записано только целое число. Все переменные и константы, которые используются в программе, должны быть описаны только один раз.

Переменные с индексами

Как указывалось выше, переменные с индексами являются элементами массивов. Массивы должны быть описаны до их использования в программе в разделе описания переменных VAR, если элементы массива относятся к любому из перечисленных ранее типов, или в разделе описания типов TYPE, если программист сам задает тип элементов массива, при этом ЭВМ резервирует место в памяти для хранения элементов массива, например

23

VAR NOR, COP: ARRAY [1..20] OF REAL;

M1: ARRAY [1..4,1..5] OF INTEGER;

C5: ARRAY [1..5] OF CHAR;

При описании задаются имя массива, границы изменения его индексов и тип элементов массива. Описание массива начинается со служебного слова ARRAY (массив), которое отделяется от имени массива символом «:», затем в квадратных скобках указываются нижняя и верхняя границы изменения индексов элементов данного массива, разделенные символом « .. ». После служебного слова OF (из) указывается тип элементов массива. В приведенном примере описаны одинаковые по структуре одномерные массивы NOR и COP, элементы которых являются вещественными переменными, пронумерованными целыми числами от 1 до 20; одномерный массив с именем С5, содержащий 5 элементов символьного типа. Кроме того, описан двумерный массив М1 – матрица целых чисел, имеющая 4 строки и 5 столбцов.

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

CONST

N = 5;

VAR

C5 : ARRAY [1 . . N] OF CHAR;

Верхняя граница индекса этого массива – описанная в разделе констант целая константа N.

Примеры неправильных описаний массивов:

A: ARRAY [2 . . 1] OF REAL; – нижняя граница индексов больше верх-

ней;

C:ARRAY [2 . . N+1] OF CHAR; – верхняя граница индексов задана выражением, а не константой;

D:ARRAY [2.0 . . 5.0] OF REAL; – вещественные границы индексов недопустимы.

Упражнения к разделу.

Определить тип приведенных ниже констант

1)

′K′

6) 2.0

 

2)

TRUE

7) ′ ′

3)

2

8) FALSE

4)

′2′

9) 0.2222

5)

2.OE-02

10) ′

′ ′ ′

3. ОПЕРАЦИИ И ВЫРАЖЕНИЯ

Все операции в языке Турбо Паскале можно разделить на четыре группы: - арифметические;

24

-логические;

-операции отношения;

-операции со строками.

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

3.1. Арифметические операции

Арифметические операции применимы только к величинам целых и вещественных типов (табл.3).

Отметим, что три первые операции дают результат целого типа, если конструкции (константы, переменные, стандартные функции), над которыми выполняются эти действия, целого типа; в противном случае результат имеет вещественный тип (табл.3). При использовании знаков операций DIV или MOD они должны быть отделены от операндов хотя бы одним пробелом.

Пример:

A MOD B {если, например A=10 и B=3, то результат =1}

C DIV D {если, например C=10 и D=3, то результат =3} 13 DIV - 4 = - 3 13 MOD -4 = 1

Всегда А MOD В = А- (А DIV В) * В

Таблица 3

Зависимость типа результата от типа операндов

Знак

Операция

 

Тип операндов

Тип результата

+

сложение

 

целый

целый

 

 

 

хотя бы один веществен-

вещественный

-

 

 

ный

 

вычитание

 

целый

целый

 

 

 

 

 

хотя бы один веществен-

вещественный

*

 

 

ный

 

умножение

 

целый

целый

 

 

 

 

 

хотя бы один веществен-

вещественный

/

 

 

ный

 

деление

 

целый или вещественный

вещественный

 

 

DIV

деление целых чи-

целый

целый

 

сел

 

 

 

MOD

вычисление

остатка

целый

целый

 

от деления

целых

 

 

 

чисел

 

 

 

25

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

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

Под высказыванием понимается всякое предложение, в котором содержится смысл утверждения (истинности) или отрицания (ложности). Одно и то же высказывание не может быть одновременно истинным и ложным или не истинным и не ложным. Отдельные высказывания можно обозначить заглавными буквами латинского алфавита A, B, C, … Если высказывание (суждение) А истинно, то, например, А = 1. Если С = 0, то высказывание С ложно.

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

Основными логическими операциями являются логическое отрицание, логическое умножение, логическое сложение, сложение по модулю 2.

Логические операции применяются к величинам логического типа, результат операций также логического типа.

В Паскале используются следующие логические операции:

NOT («не» - отрицание), AND («и» - логическое умножение, конъюнкция), OR («или» - логическое сложение, дизъюнкция), XOR (исключающее или). Операнды и результат могут принимать одно из значений: TRUE (истина) или FALSE (ложь).

Результаты операций определяются таблицей истинности (табл.4)

 

 

 

 

 

 

Таблица 4

 

 

Таблица истинности

 

 

 

 

 

 

 

 

 

 

 

X

Y

NOT X

X AND Y

 

X OR Y

X XOR Y

 

TRUE

TRUE

FALSE

TRUE

 

TRUE

FALSE

 

TRUE

FALSE

FALSE

FALSE

 

TRUE

TRUE

 

FALSE

TRUE

TRUE

FALSE

 

TRUE

TRUE

 

FALSE

FALSE

TRUE

FALSE

 

FALSE

FALSE

 

Логическое отрицание (операция НЕ, инверсия).

Пусть имеется некоторое высказывание А. Отрицание этого высказывания обозначается A , которое принято читать: не А.

26

Если высказывание А истинно (А=1), то высказывание A ложно ( A = 0). Если высказывание А ложно (А=0), то высказывание A истинно ( A =1 ). Таким образом, для логического отрицания справедливо следующее правило: 0 = 1;

1 = 0.

Логическое умножение (операция И, конъюнкция).

Операцию логического умножения двух переменных А и В обозначают А/\В (принято читать: А и В). Высказывание А/\В истинно только в том случае, если А истинно (А=1) и В истинно (В=1), то есть А/\В =1. Во всех остальных случаях это высказывание ложно, т.е. А/\В = 0. Следовательно, при логическом умножении справедливо следующее правило: 0/\0 =0; 0/\1=0; 1/\0=0; 1/\ 1 =1.

Правила логического умножения справедливы не только для двух сомножителей, но и для любого их количества, т.е. А/\В/\С/\D/\ ….

Логическое сложение (операция ИЛИ, дизъюнкция).

Операцию логического сложения двух переменных А и В обозначают А\/В (принято читать: А или В). Высказывание А\/В истинно (А\/В =1) в том случае, если хотя бы одно из значений А или В истинно (А =1 или В =1). Если же это условие не выполняется, то высказывание ложно (А\/В =0) Таким образом, при логическом сложении справедливо следующее правило:

0\/0 =0; 0\/1 =1; 1\/0 =1;

1\/1 =1.

 

Правило логического сложения справедливо не только для двух слагае-

мых, но и для любого их числа, т.е. А\/В\/С\/D\/….

 

Сложение по модулю 2 (ИЛИ исключающее).

 

Операцию сложения двух переменных А и В по модулю 2 обозначают

А В. Высказывание А В

истинно ( А В =1)

в том случае, если только

одно из переменных А или В истинно ( А =1, В =0

или А =0, В =1). Если же

это условие не выполняется, то высказывание ложно (А В=0). Таким образом, сложение по модулю 2 выполняется по такому правилу:

0 0 =0; 0 1 =1; 1 0 =1; 1 1 =0.

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

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

Основные правила преобразования следующие:

27

А/\ A = А /\ 0 =0;

А\/ A = А \/ 1 =1;

А/\ А = А \/ А = А /\ 1 = А \/ 0 = А;

А/\ В = В /\ А; А \/ В = В \/ А;

(А /\ В) /\ С = А /\ (В /\ С) = А /\ В /\ С; (А \/ В) \/ С = А \/ (В \/ С) = А \/ В \/ С; (А /\ В) \/ С = (А \/ С) /\ (В \/ С);

(А \/ В) /\ С = (А /\ С) \/ (В /\ С);

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

A B =

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

A B =

 

/\

 

;

 

A

\/ В ;

A

В

А В= (А /\

 

 

 

/\ В) = (А \/ В) /\ (

 

\/ ̅);

В

) \/ (

A

A

Если подставить в эти выражения значения 0

и 1 для всех переменных, то

можно убедиться в справедливости рассмотренных

формул алгебры логики.

При разработке узлов ЭВМ смысл ложных или истинных высказываний А, В, С во внимание не принимается; аппарат логики используется для выполнения заданных логических преобразований. Например, арифметические преобразования (сложение, вычитание) задаются в виде совокупности логических преобразований над аргументами.

Упражнения к разделу Упражнение 1. Какие операции определены над переменными булевско-

го типа?

Упражнение 2. Объясните ошибки в следующих записях:

а) 1 and 0

б) true + false

в) true < 0

г) not 2 = 5

д) true or (1/0 > 1)

е) x > 0 or y =4

ж) not not b or or d

Упражнение 3. Какие из приведенных ниже записей являются правильными с точки зрения языка Паскаль?

а) ‘A’ < ‘C’

б) ‘1’ < ‘9’

в) FALSE < TRUE

г) ‘A’< ‘B’ and 1 < 2

д) ‘0’ or ‘9’

е) (‘D’ > ‘C’) and (1 < 2)

Упражнение 4. Указать порядок выполнения операций при вычислении выражения:

а)

a and b or not c and d

 

б) (x >= 0) or

t and odd(x) or

(y*y<> 4)

 

Упражнение 5. Вычислить следующие выражения при a = true и b = false:

а)

a or b and

not a

б) (a or b) and not a

в) not a and b

 

г) not (a and b)

 

 

 

28

Упражнение 6. Доказать тождества:

а) a and ( not a) = false

б) a or ( not a) = true

в) not (not a) = a

г) true or a = true

д) false and a = false

е) a or a = a.

Упражнение 7. Записать на Паскале отношение, истинное при выполнении указанного условия и ложное в противном случае:

а) целое к делится на 7;

б) уравнение ax2 + bx + c =0 ( a≠0 ) не имеет вещественных корней; в) точка ( x,y ) лежит вне круга радиуса r с центром в точке ( 1, 0);

г) 0 < x < 1;

д) x = max (x,y,z);

e) x лежит вне отрезка [ 0,1];

ж) x принадлежит отрезку [ 2,5] или [ -1,1];

з) значение x принадлежит одному из отрезков [ -5, -4], [ 0,3], [ 4.2, 7]

3.3. Операции отношения

Предназначены для сравнения двух однотипных величин. Операции отношения следующие:

=равно

<> не равно

<меньше

<= меньше или равно > больше >= больше или равно

Результат сравнения имеет логический тип и принимает значение TRUE (истина), если указанное соотношение выполняется, и FALSE (ложь), если соотношение не выполняется.

Пример 1. Операция х<2.5 сравнивает значение, хранящееся в ячейке памяти, отведенной для переменной х, и вещественное число 2.5. При х=2.1 отношение х<2.5 имеет значение TRUE и значение FALSE при х=4.8. Напомним, что переменная х должна быть описана в разделе VAR программы как переменная вещественного типа.

N MOD 5 = 0 – отношение имеет значение TRUE, если переменная N целого типа будет иметь значение кратное 5, и FALSE, если N не кратно 5.

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

29

Пример 2. Длины сторон треугольника заданы переменными a,b,c. Записать в виде логического выражения условие того, что из трех отрезков длиной a,b,c можно построить треугольник.

Здесь необходимо проверить, выполняется ли система неравенств

a+b>c

b+c>a

a+c>b,

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

(a+b>c) AND (b+c>a) AND (a+c>b).

ЭВМ выбирает из памяти значения a,b,c, подставляет их в выражение и проверяет выполнение входящих в него неравенств. Если каждое из неравенств принимает значение TRUE, то и все выражение дает значение TRUE, то есть построить треугольник со сторонами a,b,c можно. Если хотя бы одно из неравенств есть FALSE, то треугольник построить нельзя.

Пример 3. Записать высказывание, что точка А не принадлежит отрезку

[2,5].

На языке Паскаль это будет (А<2) OR (А>5). Выражение будет иметь значение TRUE,если хотя бы одна из скобок будет иметь значение TRUE.

Пример 4. Записать логическое выражение, определяющее принадлежность некоторого действительного числа Х одному из двух отрезков [a,b] или

[c,d].

Решением является логическое выражение

 

(a<=x) AND (x<=b) OR (c<=x) AND

(x<=d)

1

5

2

7

3

6

4

В нижней строке указан порядок выполнения операций (см. 3.5)

Пример 5. Записать условие принадлежности точки М с координатами (х, у) координатной четверти (х ≥ 0, у ≥ 0).

Задаче соответствует логическое выражение (х>=0) AND (у>=0). Координата х точки М будет сравниваться с нулем и если х – положительное число, то первая скобка получит значение TRUE. Затем координата у точки М будет сравниваться с нулем и вторая скобка получит значение TRUE, если число у положительно. Затем операция AND (конъюнкция) свяжет две скобки, и все выражение будет иметь значение TRUE, если обе скобки имели значение TRUE и точка М принадлежит первой координатной плоскости. В противном случае все выражение получит значение FALSE, то есть точка М не принадлежит первой четверти.

Пример 6. Записать на языке Паскаль выражение, которое принимает значение TRUE, когда точка с координатами (х,у) принадлежит заштрихованной области (рис.3).

30

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]