Материал: Паскаль. типы данных, операторы. методические указания для самостоятельной работы по дисциплине «Информатика». Кононов А.Д., Кононов А.А

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

ся исключение: переменная вещественного типа, а выражение – целого. Обратное запрещено.

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

Для преобразования значений вещественного типа в значения целого типа предназначены функции TRUNC(X) и ROUND(X).

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

1) Какие из приведенных записей являются правильными?

а) ‘a’ < ‘c’

б) ‘1’ > ‘9’

в) false < true

г) ‘a’ < ‘b’ and 1 < 2

д) 0’ or ‘9’

е) (‘d’ > ‘g’) and (1 < 2)

2. Записать на языке Паскаль

а)

 

 

 

x2 3x y

 

 

 

 

 

 

 

 

 

 

 

 

 

arcsinx ex

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

1 arctg

x

 

 

в)

cosx2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

2bc3 3

 

 

 

y

д)

 

(abc)

 

 

2x | e2xy arcsinx

 

 

 

ж)

 

 

 

 

 

 

2ln2(1 x3) e2ax y

 

 

 

arctg(x 3) e2x cos(k 2)

 

 

 

arctg2x 5

 

 

 

 

 

 

 

и)

 

3x y

 

 

 

3 x7sinx e2x

 

 

 

 

 

 

 

 

 

 

cosx e p2

3

 

 

y

л)

 

 

 

 

 

2xz

 

|6z3 y2 | csinx tg2(ex)

 

н)

 

 

cos2(x 1) ax c

 

 

 

 

 

tg3x e 2x 5

 

 

п)

bx

7

 

3x2cos2(x 1)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ax3 sinx ex

 

 

 

 

 

 

 

 

 

б)

 

 

 

x2c4

 

 

 

d

 

 

 

 

 

 

 

 

 

 

 

 

 

| x | d

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

г)

 

 

y

 

| 4xy 2bz3 | cos

 

 

x

2x

2x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x2sin9(x 4) x

 

π

 

 

 

 

 

 

 

 

 

е)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

arctg(2a) ex

 

 

 

 

 

 

 

 

 

 

 

 

x3

 

ax bx2 y3

з)

 

x

sin2x ex | bx 4d |

 

 

 

 

 

xcos2x sin3x3

 

 

 

 

к)

 

4

y

 

 

 

3 x7 csin

x

e 2x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

м)

 

 

 

2x2 cos2(x 0.003)

 

 

 

 

 

sin

2x

e 3x

y5

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

о)

 

 

 

|a3 3x3 | cx y

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

3

 

 

 

 

 

 

 

 

3

 

x

 

 

 

 

cx

 

 

x 1 sin

e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

р)

 

 

2ln2(1 x2) |3x

y|

 

 

 

 

arctg(x4) sinx 5

 

9

3. Определить тип результата выражений, если i, j, k : integer;

x, y : real;

 

 

а) i * i +j * j +2 *k/2

б)

x < y

в) sin(x) + 2 * cos(y)

г)

I + sqrt(j)

4. Какие из приведенных ниже операторов присваивания явля-

ются правильными (если i, j, k :integer; x, y, z :real; a, b :boolean):

a) x:= y+ sin (sin(z));

б) a :=(x<y) or b and (i<>k);

в) x := i + j – b

г) i := i + k/j

5. Вычислить значения выражений, если a = 2.5; b = 7.8; c = -

17.3; m =5; x = 8.7; e = true

 

а) (a + b)/c * m

б) 2 + x * x/(x + (a + b)/5)

в) (a < b) and (c > a) or (c < m) or e

6. Записать приведенные ниже высказывания в виде выражений: а) значение а не принадлежит интервалу (0, 3); б) значение а принадлежит отрезку [ -2, 0];

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

г) точка а с координатами (x, y) лежит внутри круга с центром в начале координат и радиусом 2.3;

д) точка а с координатами (x, y) лежит на границе или вне единичного круга с центром в начале координат.

2.2. Организация ввода – вывода

Ввод – вывод связан с обменом информацией между оперативной памятью ЭВМ и внешними носителями информации.

Задание исходных данных (ввод) можно выполнить по-разному. 1. В разделе констант задать соответствующие значения. При этом тип константы автоматически определяется по содержимому

правой части.

Пример. Вычислить значение y = ax2 + kx –t при a = 2,5; x = 7,3; k = -17,5; t = 548.

const a = 2.5; x = 7.3; k = -17.5; t = 548;

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

begin

y:=a*x*x + k*x – t;

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

end.

10

Именованным константам а, х, к, t присваивается вещественный тип, a константе t – целый.

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

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

var a, x, k, t, y :real;

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

begin

a:=2.5; x:= 7.3; k:= -17.5; t:= 548.0; y:=a*x*x + k*x – t;

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

end.

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

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

READ (a1, a2, . . . ,an);

(1)

READLN (a1, a2, . . . ,an);

(2)

READLN;

(3)

являются по своей сути операторами обращения к встроенным процедурам ввода данных. Здесь а1, a2, . . . ,an – список имен переменных, значения которых необходимо ввести, то есть эти операторы позволяют выполнить программы с различными наборами исходных данных. Типы переменных должны соответствовать типам вводимых значений. Ввод в языке Паскаль может быть только бесформатным. Могут вводиться данные целого, вещественного и символьного типа. Числа при вводе разделяются символом «пробел» или клавишей «ввод» (Enter). Символы при вводе не разделяются. Ввод строки завершается символом «ввод».

В отличие от READ оператор READLN осуществляет переход к следующей строке после ввода всех указанных в операторе данных.

Возможны различные методы организации ввода этих чисел:

11

а) с использованием одного оператора READ: var a, b, d, t : real;

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

begin

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

read (a,b,d,t);

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

end.

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

б) с использованием нескольких операторов READ:

. . . read (a, b, d);

read (t); . . .

Набор чисел как в предыдущем случае.

 

в) с использованием комбинации операторов READ и READLN:

… readln ( a, b, d ) ;

read ( t ) ; …

Здесь числа, соответствующие переменным a, b, d, набираются на одной строке, а число, соответствующее переменной t, – на другой, так как после окончания работы оператора readln (a, b, d) оператор

read (t) может считать данные только с начала следующей строки.

 

Вывод данных. Для вывода данных используются процедуры

 

WRITE (a1, a2, . . . , an);

(4)

WRITELN (a1, a2, . . . , an);

(5)

WRITELN ;

(6)

где a1, a2, . . . , an – список параметров или выражений, значения которых необходимо вывести; выводимые выражения могут быть целого, вещественного, символьного, логического или строкового типа.

Оператор (5) в отличие от (4) после вывода последнего значения в списке осуществляет переход к следующей строке.

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

Так, общий вид процедуры при выводе значений целого, символьного, строкового или логического типа

WRITE (a : m); или WRITELN (a : m);

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

12

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

WRITE (b : m : n); WRITELN (b : m : n);

где b – выводимое выражение вещественного типа, m и n – константы или выражения целого типа.

Приведем примеры операторов вывода.

1. Организация вывода значений переменных a, b, c целого типа:

а) . . . write (a, b);

writeln (c); . . .

Все числа печатаются на одной строке. Аналогичный результат

можно получить, написав один оператор write (a, b, c);

б) . . . writeln (a, b);

writeln (c); . . .

Значения a и b печатаются на одной строке; с – со следующей строки;

в) . . . write (a : 12, b : 5, c : 4); . . .

При печати под значение переменной а отводится 12 позиций, под b – 5, под с – 4 позиции.

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

г) … write ( ‘a =’, a: 2,’ b = ‘, b: 3, ‘ c=’, c: 1 );

Здесь используется возможность вывода строк символов. Будет напечатaно

a = 12 b= – 25 c= 4.

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

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

writeln ( ‘ s1=’, s1:5,’ s2 = ‘, s2 );

напечатает (если символьной переменной s1 в программе присвоено значение ‘*’, а s2 – ‘w’) следующую строку:

s1 = * s2 = w.

4.При выводе значений булевского типа на печать выводится true или false, например, оператор writeln ( a < b : 7 ) ; напечатает в от-

13