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

Информатика. Практикум

.pdf
Скачиваний:
1
Добавлен:
24.11.2025
Размер:
5.18 Mб
Скачать

В данном примере описаны следующие переменные:

а) C – двумерный вещественный массив, состоящий из трех строк (индексы строк от 1 до 3) и пяти столбцов (индексы столбцов от 1 до 5). Доступ к элементам массива С осуществляется так:

элемент первой строки и второго столбца массива – С[1, 2], элемент третьей строки и четвертого столбца массива – С[3, 4]; б) D – двумерный байтовый массив, состоящий из пяти строк

(индексы строк от 0 до 4) и двух столбцов (индексы столбцов от 1 до 2), доступ к элементам массива D осуществляется так:

элемент нулевой строки и второго столбца массива – D[0, 2], элемент четвертой строки и первого столбца массива – D[4, 1].

П 1.5. Основные операторы языка Pascal

Оператор присваивания

<переменная> := <выражение>;

где <переменная> – переменная, элемент массива или имя функции, а <выражение> – любое допустимое выражение, совместимое по типу с переменной в левой части оператора. Оператор вычисляет значение выражения, записанного справа от операции присваивания «:=», и присваивает полученное значение переменной в левой части оператора.

Примеры использования оператора присваивания:

Х := 10; {присваивание переменной Х значения 10} P :=P + 5; {увеличение значение переменной P на 5}

Операторы ввода-вывода

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

Read, Readln, Write, Writeln.

Структура оператора ввода

Read(F, x1, x2, ..., xn) или Readln(F, x1, x2, ..., xn),

где F – переменная, связанная с файлом, из которого происходит чтение значений переменных x1, x2, ..., xn. Если переменная F отсутствует, то чтение значений переменных производится с клавиатуры. Оператор Readln в отличие от Read переводит курсор

301

на следующую строку. Использование оператора Readln без аргументов используется для ожидания нажатия клавиши <Enter>.

Структура оператора вывода:

Write(F, e1, e2, ..., en) или Writeln(F, e1, e2, …, en),

где F – переменная, связанная с файлом, в который осуществляется запись значений выражений e1, e2, ..., en. При отсутствии F значения выводятся на экран. Оператор Writeln в отличие от Write переводит курсор на новую строку после вывода значений. Использование оператора Writeln без аргументов используется для вывода пустой строки.

Выходные форматы языка Pascal

Для вывода значений переменных в языке Pascal используются следующие форматы (шаблоны):

R : a : b и R : a,

где R – переменная;

а – число всех отводимых позиций под число; b – число позиций дробной части числа.

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

Примеры работы оператора Write представлены в табл. П 1.6. Если значение короче, оно «прижимается» к правому краю отведенного поля; если длиннее – поле «раздвигается» до необходимых размеров.

 

 

Таблица П 1.6

 

 

 

Значение

Оператор

Результат на экране

R = 654.734

Write(R)

6.54734000000171E+00002

R = 654.734

Write(R:10)

6.5E+0002

R = 654.734

Write(R:10:2)

654.73

302

 

 

Окончание табл. П 1.6

 

 

 

Значение

Оператор

Результат на экране

I = 77

Write(I)

77

I = 77

Write(I:5)

_ _ _77

 

 

 

S = Minsk

Write(S)

Minsk

S = Minsk

Write(S:3)

Min

S = Minsk

Write(S,’ ‘,S)

Minsk Minsk

Оператор условного перехода

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

1. If

<условие>

then

begin

<группа операторов 1> end

 

 

else

begin

<группа операторов 2> end;

2. If

<условие>

then

begin

<группа операторов > end;

где If, then, else – служебные слова (если, то, иначе);

begin … end – операторные скобки, ограничивающие действия операторов. Если используется один оператор, то операторные скобки могут быть опущены.

Для оператора первого вида если <условие> истинно, то выпол-

няются <группа операторов 1>, если ложно, то <группа операто-

ров 2>. Для оператора второго вида если <условие> истинно, то выполняется <группа операторов>. В общем случае <условие> представляет собой логическое выражение, в котором могут использоваться логические операции not («логическое отрицание»), and («логическое умножение И») и or («логическое сложение ИЛИ») и xor («логическое исключающее ИЛИ»).

Примеры использования оператора if приведены в табл. П 1.7.

303

Таблица П 1.7

 

Фрагмент программы

Математическая форма

 

 

фрагмента

 

 

 

 

 

If

A <> B

then

Y:= sin(x);

Если A B, то вычислить

Y = sin(x)

 

 

 

 

 

 

 

 

 

 

 

 

If

(A > B)

and (C < D) then

Если условия А > B и C < D

begin

 

 

 

 

выполняются одновременно,

 

Y:= cos(x);

 

 

 

то вычислить Y = cos(x) и

 

Z := ln(abs(cos(x)));

 

Z = ln(|cos(x)|)

 

end;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Если

условие

(A + B) < D

If (A + B) < D) then Y:= cos(x)

выполняется, то

вычислить

 

 

 

else Y:= sin(x);

Y = cos(x), иначе вычислить

 

 

 

 

Y = sin(x)

 

If (R/D < D) or (A >0 ) then

 

 

 

begin

 

 

Если

выполняется одно из

 

Y:= ln(x);

Z := cos(x);

условий: R/D < D или A > 0,

end else

 

 

 

 

то вычислить Y

= ln(x) и

begin

 

 

 

 

Z = cos(x), иначе вычислить

 

Y:= sin(x)/cos(x);

 

 

 

 

 

R := Y*Y;

 

 

Y = sin(x)/cos(x) и R = Y Y

end;

 

 

 

 

 

 

 

 

 

 

 

 

Операторы циклов

Операторы циклов используются для повтора фрагментов программы. В языке Pascal используется три вида операторов цикла: for, While, Repeat.

Структура оператора for

Движение цикла «вверх» (шаг +1)

Движение цикла «вниз» (шаг –1)

for <n>:=<n1> to <n2> do

for <n>:=<n1> downto <n2> do

begin

или begin

<операторы>

<операторы>

end;

end;

где n – параметр цикла;

 

304

n1, n2 – начальное и конечное значения параметра цикла;

to, downto – служебные слова, означающие движение цикла «вверх» и «вниз».

Пример использования оператора цикла for

Фрагмент программы реализации возведения переменной A в третью степень:

p:= 1;

for i:= 1 to 3 do p:= p * A;

Пошаговая иллюстрация работы оператора for

Шаг 1. P = 1;

Шаг 2. I = 1;

Шаг 3. Если 1 < 3, то P = 1·А;

Шаг 4. I = 1 + 1 = 2;

Шаг 5. Если 2 < 3, то P = А·А;

Шаг 6. I = 2 + 1 = 3;

Шаг 7. Если 3 < 3, то P = А2·А;

Шаг 8. I = 3 + 1 = 4;

Шаг 9. Если 4 > 3, то выход из цикла.

Цикл с предусловием – оператор While

While <условие> do begin

<операторы> end;

где While, do – служебные слова (пока, выполнить).

При выполнении <условия> выполняются <операторы>, после чего проверка <условия> повторяется. Если <условие> ложно (False), то «работа» While прекращается. Если тело цикла (<операторы>) состоит из одного оператора, то операторные скобки begin …end не используются.

305

Пример использования оператора While

Фрагмент программы реализации возведения переменной А в третью степень:

i:= 1; p:= 1;

While i <= 3 do

Begin

p:= p * A; i:= i + 1;

End;

Цикл с постусловием – оператор Repeat

Repeat

<операторы>

Until

<условие>,

где Repeat, Until – служебные слова (повторять до тех пор, пока). Тело цикла (<операторы>) выполняется хотя бы один раз, после

чего вычисляется <условие>, которое проверяется. Если его значение False, то <операторы> повторяются, в противном случае оператор Repeat...Until завершает свою работу.

Пример использования оператора Repeat

Фрагмент программы реализации возведения переменной A в третью степень:

i:= 1; p:= 1;

Repeat

p:= p * A; i:= i + 1;

Until i > 3;

Сравнение циклов While, Repeat, For

В цикле While проверка условия выполнения цикла находится в начале цикла, а в Repeat – в конце. Цикл Repeat всегда выполняется

306

хотя бы один раз, а цикл While может не выполняться ни разу. В цикле While выход из цикла осуществляется, если условие ложно, а в Repeat – если условие истинно. При заранее известном числе циклов удобным является использование оператора for.

Операторы для работы с файлами

В языке Pascal существуют три класса файлов: типизированные, текстовые и нетипизированные. Каждому файлу в языке ставится в соответствие файловая переменная определенного типа. Для этого используется процедура

Assign(f : File, name : String),

где f – переменная файлового типа;

name – строковое выражение, содержащее полное имя файла, включая диск и все подкаталоги.

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

Для описания переменной текстового файла используется служебное слово Text. Например, запись f:Text означает описание файловой переменной f, которая будет использоваться для работы с текстовым файлом.

Для ввода и вывода информации в файл используются следующие процедуры:

Reset(f : File) – открывает существующий файл для чтения и записи;

Rewrite(f : File) – создает и открывает новый файл для записи. В текстовом файле может быть использована процедура откры-

тия файла с добавлением информации в конец файла: AppEnd(f : Text), где f – текстовая переменная.

307

Текстовый файл можно рассматривать как последовательность символов, разбитую на строки. Запись и чтение в файл осуществляются с помощью процедур ввода/вывода:

Read(f, Ww :Word) – чтение из файла, связанного переменной f и присваивание значений переменной Ww.

Write(f, Ww :Word) – осуществляет запись переменной Ww в файл, на который указывает файловая переменная f. Дополнительно можно использовать процедуры Readln и Writeln, которые обеспечивают те же действия, что и Read и Write соответственно, но при этом еще осуществляют перевод на новую строку.

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

Close(f : File)

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

Примеры ввода и вывода данных в файл

Разработать программу чтения трех чисел из файла koef.txt и вывод их произведения в файл rez.txt.

Структура файла koef.txt: 12.7 6.1 0.85

 

Решение

Шаг 1.

Создать текстовый файл koef.txt.

Шаг 2.

Записать в файл числа 12.7 6.1 0.85.

Шаг 3.

Создать программу чтения чисел 12.7 6.1 0.85 и запи-

си из произведения в файл rez.txt. Шаг 4. Запустить программу.

Программа

Program ReadFile

Var

{файловые переменные для работы с текстовыми файлами}

308

f1, f2 : Text;

k1, k2, k3 : Integer; begin

Assign(f1, ‘koef.txt’); Reset(f1);{открытие файла koef.txt}

Readln(f1, k1, k2, k3);{чтение значений из файла koef.txt} Close(f1); {закрытие файла koef.txt}

Assign(f2 ‘rez.txt’); Rewrite(f2); {создание файла rez.txt}

{вывод значения произведения в файл rez.txt}

Writeln(f2, ‘Произведение коэффициентов = ’, k1*k2*k3); Close(f2); {закрытие файла rez.txt}

end.

П1.6. Использование стандартных процедур и функций модулей Crt и Graph в языке Pascal

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

1)стандартные процедуры;

2)стандартные фунции;

3)процедуры пользователя;

4)функции пользователя.

Примеры стандартных процедур: TextMode, Close, Assign. Примеры стандартных функций: sin(x), cos(x), ln(x), exp(x). Стандартные процедуры и функции находятся в соответствующих библиотечных модулях языка. Так, например, процедуры и функции управлении экраном находятся в модуле Crt, процедуры и функции работы с графикой – в модуле Graph. Процедуры и функции пользователя могут включать в себя наборы стандартных процедур и функций.

Работа в текстовом режиме (модуль Crt)

Для использования процедур, которые находятся в модуле Crt необходимо использовать запись: Uses Crt.

Текстовые режимы отображают символы кодовой таблицы персонального компьютера. Минимальной единицей управления служит символ. Текстовые режимы устанавливаются процедурой TextMode(режим). Значение режим – номер режима (если режим = 0, то производится установка экрана 25 строк 40 столбцов, если

режим = 2, то установка режима 25 строк 80 столбцов). Например, в результате работы процедуры TextMode(2) будет установлен такой

309

текстовый режим, для которого координата Х изменяется от 1 до 80, координата Y – от 1 до 25, координата левого верхнего угла (1, 1).

Процедуры управления экраном

Для управления экраном используются следующие процедуры: ClrScr, которая очищает экран и помещает курсор в левый

верхний угол экрана с координатами (1; 1);

GotoXY(X, Y), помещающая курсор в точку экрана с координатами X (столбец) и Y (строка);

WhereX, возвращающая X координату текущей позиции курсора (результат целочисленный);

WhereY, возвращающая Y координату текущей позиции курсора (результат целочисленный).

Например, если курсор находится в 70-м столбце во 2-й строке, то результатом выполнения следующих операторов:

A := WhereX;

B := WhereY;

будет A = 70, B = 2.

Установка цвета и фона символов

Для установки цвета выводимых символов используется процедура TextColor (цвет), для фона – процедура TextBackGround(цвет). Значение цвет – это имя или номер константы цвета, возможные значения приведены в табл. П 1.8.

Таблица П 1.8

Номер константы

Имя константы

Цвет

0

Black

Черный

1

Blue

Синий

2

Green

Зеленый

3

Cyan

Голубой

4

Red

Красный

5

Magenta

Фиолетовый

6

Brown

Коричневый

7

LightGray

Светло-серый

14

Yellow

Желтый

15

White

Белый

310