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

Информатика. Учебное пособие для иностранных слушателей подготовительного отделения (включая подготовку на уровень магистратуры)

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

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

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

Файл (File) – именованная область внешней памяти персонального компьютера (ПК), предназначенная для хранения программы или данных.

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

Любой файл имеет следующие характерные особенности:

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

2.Файл содержит компоненты одного типа. Типом компонентов может быть любой тип Турбо Паскаля (ТП), кроме файлов.

3.Длина вновь создаваемого файла никак не оговаривается при его объявлении и ограничивается только ёмкостью устройства внешней памяти.

Существует три вида файлов: 1) типизированные (file of …); 2) текстовые (text);

3) нетипизированные (file),

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

type

t1= file of < тип >;

t2 = text;

t3 = file;

Var

f1, f2: t1;

f3, f4, f5: t2;

f6:

t3;

где t1,t2,t3 – имена типов файлов (t1 – типизированный, t2 – текстовый, t3 – нетипизированный),

f1,f2, f3, f4, f5, f6 – имена файловых переменных,

< тип >

– любой тип ТП, кроме файлов.

Вышеприведенное описание может быть представлено в следующей эк-

вивалентной форме:

var

f1, f2 : file of < тип >;

 

f3, f4, f5: text ;

 

f6:

file;

Имя

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

кой.

 

 

 

 

21

Пример: gg. pas gg. exe d1. dat.

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

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

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

Контрольные вопросы и упражнения

1.Можно ли выполнять операцию деления ( / ) над переменными целого типа?

2.Какого типа будет результат деления 19 на 4?

3.Есть ли разница (с точки зрения языка Паскаль) между числами 157 и 157.0, между 30 и 3Е1?

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

5.Какую информацию извлекает транслятор из описания переменных и как он ее использует?

6.Какие значения имеют переменные в начале выполнения программы?

7.Можно ли менять значения констант?

8.Как определяются типы констант?

9.Почему не надо описывать константы maxint, true, false, pi?

10.Записать следующие числа без десятичного порядка:

а) -0.00037Е+4

б)333Е-3

в)1Е3

11. Сколько операций выполняется при вычислении выражения

(x + 1/5) * (y + 7/10) - 3/4?

Как сократить число операций?

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

а) 5.

б) – 6.1

в) 0.0

г) 9

д) .0Е -2

е) 0.15Е – 5

ж) – 5.3Е4

з) - 2.4Е+4

и) – 71

к) 0.21

л) .456

м) 2,1

н) 0005

о) – 0

п)7,0

р) +0.3

с) .3

т) 2/3

у) Е-1

ф) 8Е0

13. Записать на Паскале следующие числа:

 

 

 

а) 5! б) LXIV

в) 6,38

г) – 0,7(4)

д) 11/4

е) -1/6

 

 

 

 

 

 

 

 

 

и) 5·106

к) -24.8·10-7

 

м) 7 e3x

ж) 2 з) π

л) 1/1000

14. Вычислить

 

 

 

 

 

24/(3*4) – 24/3/4 + 24/3*4

 

 

 

 

 

 

 

 

22

 

 

 

3.3. Выражения и операции

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

Операция присваивания. Операция служит для замены значения переменной, стоящей слева от знака присваивания ( =), значением выражения, стоящего справа от него. Например, A:=B;

Обе части (левая и правая) должны быть одного типа. Исключения составляют следующие случаи:

1.Тип переменной – real, тип выражения – integer. Здесь целое значение выражения преобразуется к вещественному типу.

2.Одна из частей представляет подмножество другой.

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

Например, A not B.

Мультипликативные операции:

1. Умножение, пересечение множеств (*). Например, a:=b*c;

Mas1:=Mas2 * Mas3;

где Mas1, Mas2, Mas3 – множества переменных. 2. Деление нацело (DIV):

a := b div c;

3.Деление ( / ) : a := b/ c;

4.Вычисление модуля (остатка от деления) целых чисел (MOD); a := 10 mod 3;

Остатком от деления числа 10 на 3 будет 1. 5. Конъюнкция (логическое И (AND))

a := b and c;

Все переменные булевского типа.

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

Аддитивные операции:

1. Сложение, объединение множеств (+): a := b+c;

Mas1:=Mas2+Mas3;

2.Вычитание, разность множеств (-); a := b - c;

Mas1 := Mas2 - Mas3;

3.Дизъюнкция (логическое ИЛИ (OR)); a := b or c;

Если хотя бы один из операндов аддитивной операции имеет тип real, то и

результат операции будет типа real.

23

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

1.Равенство (=): b = c;

2.Неравенство (<>): b <> c;

3.Упорядоченность включения множеств (<= или >=); set1 <= set2;

4.Упорядоченность (< или >);

b < c;

5. Принадлежность (IN); b in set1; c in set2;

Результат операции всегда имеет тип boolean.

Выражения могут быть простыми и составными. Составное выражение включает в себя несколько простых.

Константное выражение – это выражение, состоящее из одних констант. Например,

(1000 + 3.28 * 2 – PI),

где PI – тоже константа.

Контрольные вопросы и упражнения

1.Почему при записи формул на Паскале их «вытягивают» в линию? Почему знак умножения всегда выписывают явно? Почему аргумент функции всегда записывают в скобках?

2.Как на Паскале записать синус от х градусов?

3.Как записать на Паскале величину основания натуральных логарифмов (число е), если Вы забыли цифры этого числа? А как записать число π в подобной ситуации?

4.Чему равны значения переменных x и y после выполнения операторов

x:=2;

y:=5;

x:=y;

y:=x?

5.а) Поменять местами значения переменных x и y.

б) Поменять местами значения переменных x, y и z так, чтобы в x ока-

залось значение y, в y – значение переменной z, а в z – значение переменной x. в) Поменять местами значения целых переменных x и y, не используя

дополнительные переменные.

 

 

6. Записать на Паскале следующие формулы:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

а)

1 +

2

б) | a + bx |

в) sin 8

г) cos2 x3

д) tg x

е) log2

x

 

 

 

 

 

 

 

з) arctg 103

5

 

ж) ch x

и) arcsin x

к) x-1

л) x8

м) x-5

н) x100

о) 21+x

 

 

 

п)x√2

3

 

 

 

 

2

 

 

т) [( ax – b) x+c] x-d

 

 

 

 

 

 

р) √1 +

с) a + bx+

 

 

 

 

 

24

 

 

 

 

 

 

 

у)

 

+

 

 

 

 

 

ф)

+

·

 

 

х)104·α - 3·

1

·β

 

 

 

 

1

 

 

 

 

 

 

 

 

5

 

 

 

 

 

 

 

2

 

ч) (x2 -3x-y)

2

 

+−

ц) (1+

 

+

 

)/(1 +

 

)

 

 

ш)

 

 

2!

3!

3+

(+ )

| |+

7.Записать в обычной математической форме:

а) (p + q) / (r +s ) – p*q /(r * s)

б) 1Е3 + beta / (x2 – gamma * delta) в) (-b + sqrt (sqr (b) – 4*a*c) )/ (2*a) г) a/b + (c + d) – (a – b)/b/c + 1E -8

д) x1 = arctan( y2 – alpha )/2 * abs(x4 – ln(5) + y5 )/exp(-1)

8.Определить тип результата следующих выражений:

а) I*I + J*J + K*K

б) X<Y

в) SIN(X) + 2*COS(Y) + Z

г) I + SQRT(J),

если известно, что I, J, K : integer;

X,Y,Z : real.

3.4. Алгебра логики

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

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

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

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

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

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

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

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

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

1 = 0.

25

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

Операцию логического умножения двух переменных А и В обозначают А/\В (принято читать: А и В). Высказывание А/\В истинно только в том случае, если А истинно (А=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.

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

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

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

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

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

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

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

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

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

A B = A \/ В ; A B = A /\ В ;

 

 

 

 

 

 

̅

А В= (А /\ В

 

 

 

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

 

 

26

 

 

Если подставить в эти выражения значения 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)

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].

27

3.5. Построение программы

Любая программа на языке Паскаль состоит из заголовка и тела (блока) программы. Заголовок программы включает ключевое слово PROGRAM и имя программы (по усмотрению программиста). Например,

PROGRAM IT_IS_MY_FIRST_PROGRAM;

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

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

label 1, 2, 50, 100, 9999, m1;

Метка – целое число, включающее от 1 до 4 цифр или идентификатор. Описание констант. В этом разделе определяются все синонимы локаль-

ных констант программы. Раздел помечается ключевым словом CONST. Например,

const

pi = -3,14; g = +9.8;

title =’ ОБЪЯВЛЕНИЕ’;

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

type (*

описание типов данных

*)

(*

строка *)

 

 

line: packed array [ 1.. 80] of char;

 

(*

перечисление

*)

 

day: (monday, tuesday, wednesday,

thursday, friday, saturday, sumday);

person: (‘Иванов’,’Петров’,’Сидоров’,’Ковалев’);

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

Например,

var (* описание переменных *) a,b,c: line; d: day;

k,l,m,n: person;

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

28

Например,

var a: packed array [ k..n ] of char;

Иногда запись файла удобнее представить в виде структуры: type

record

name: char; family: char; year: integer; day: 1 .. 31; month:1..12;

end;

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

Правила оформления процедур и функций аналогичны правилам оформления программ.

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

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

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

 

Program proba1;

 

(*

разделы описаний меток, констант, типов, переменных *)

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

 

(*

раздел описаний процедур и функций

*)

 

Procedure line (x,y,z);

 

 

29

 

 

type

 

 

t:integer;

 

 

l:char;

 

 

var

 

 

x,y,i,j : t;

 

 

z : l;

 

 

begin

 

 

for i:=x to j:=y do write(z);

 

end;

 

(*

главная программа

*)

 

begin

 

 

. . . . . . . . . . . . .

 

 

. . . . . . . . . . . . .

 

 

end;

 

(*

описание функции

*)

 

function max (x,y : real): real;

 

begin

 

 

if x > y then max:= x;

 

end;

 

Операторы языка, составляющие тело программы. Тело программы со-

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

PROGRAM IT – IS – MY ;

 

 

(* разделы * )

 

begin

(*

операторы языка * )

 

begin

(* операторы языка *)

 

end;

 

 

begin

(* операторы языка*)

 

begin

(* операторы языка *)

 

end

 

 

end

 

end.

Глубина вложенности блоков практически не ограничивается. Однако информационно и алгоритмически они должны быть правильно оформлены.

3.6. Операторы языка

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

30

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