Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 1861.pdf
Скачиваний:
5
Добавлен:
30.04.2022
Размер:
2.52 Mб
Скачать

МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ

Федеральное государственное бюджетное образовательное учреждение высшего образования

«Воронежский государственный технический университет»

Кафедра систем информационной безопасности

НАПИСАНИЕ ПРОСТЕЙШИХ ПРОГРАММ НА ЯЗЫКЕ ПАСКАЛЬ

МЕТОДИЧЕСКИЕ УКАЗАНИЯ

к выполнению лабораторных работ № 5–8 по дисциплине «Информатика» для студентов специальностей

10.05.01«Компьютерная безопасность»,

10.05.02«Информационная безопасность телекоммуникационных систем»,

10.05.03 «Информационная безопасность автоматизированных систем»

очной формы обучения

Воронеж 2019

УДК 621.3.06(07)

ББК 32.97я7

Составители: д-р техн. наук, проф. О. Н. Чопоров, д-р техн. наук, доц. К. А. Разинкин, канд. техн. наук, доц. Е. А. Москалева

Написание простейших программ на языке Паскаль:

методические указания к выполнению лабораторных работ по дисциплине «Информатика» для студентов специальностей 10.05.01 «Компьютерная безопасность», 10.05.02 «Информационная безопасность телекоммуникационных систем», 10.05.03 «Информационная безопасность автоматизированных систем» очной формы обучения / ФГБОУ ВО «Воронежский государственный технический университет»; сост. О. Н. Чопоров, К. А. Разинкин, Е. А. Москалева. Воронеж: Изд-во ВГТУ, 2019. 40 с.

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

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

Методические указания подготовлены в электронном виде и содержатся в файле МУ_Информатика_ЛР_5-8.pdf.

Ил. 3. Табл. 6. Библиогр.: 9 назв.

УДК 621.3.06(07) ББК 32.97я7

Рецензент — А. Г. Остапенко, д-р техн. наук, проф., зав. кафедрой систем информационной безопасности ВГТУ

Издается по решению учебно-методического совета Воронежского государственного технического университета

ЛАБОРАТОРНАЯ РАБОТА № 5 ЛИНЕЙНЫЕ АЛГОРИТМЫ

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

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

1)алфавит языка Паскаль;

2)структуру программы на языке Паскаль;

3)идентификаторы и зарезервированные слова;

4)назначение и способы описания констант;

5)понятие переменной, правила их описания и основные типы данных;

6)назначение и способы записи комментариев;

7)правила записи арифметических, логических и строковых операций, операций отношения;

8)операторы ввода и вывода;

9)стандартные функций языка Паскаль для записи математических выражений;

10)технологию составления линейных алгоритмов и их программирования на языке Паскаль.

ТЕОРЕТИЧЕСКИЙ МАТЕРИАЛ ДЛЯ ДОМАШНЕГО ИЗУЧЕНИЯ

1. Алфавит языка программирования Pascal

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

Алфавит языка Паскаль включает в себя следующие символы:

3

прописные и строчные буквы латинского алфавита от A до z, а также символ подчеркивания ( _ ), при этом прописные

истрочные буквы взаимозаменяемы;

арабские цифры 0 1 2 3 4 5 6 7 8 9;

специальные одиночные знаки:+ – * / = < > . , : ; ^ $ # @;

– специальные парные знаки:

[ ] ( )

{ } ;

– составные знаки : < = > =

< >

.. ( * * ) ( .. ).

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

2. Структура программы

Программа на языке Паскаль состоит из «заголовка» и «тела» программы, называемого блоком (табл. 1). В «заголовке» программы дается имя и перечисляются ее параметры (если это необходимо). Заголовок не является обязательной частью программы. Далее следует раздел подключения модулей, за которым следует список имен модулей, перечисляемых через запятую (раздел подключения модулей может отсутствовать).

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

1)описание меток;

2)определение констант;

3)определение типов;

4)описание переменных;

5)описание процедур и функций.

Далее следует блок begin … end (раздел операторов), внутри которого находятся операторы, отделяемые один от другого символом «точка с запятой».

4

 

Таблица 1

Структура программы

Обозначение раздела программы

Раздел программы

Program <имя программы>;

Заголовок программы

Uses <список имен модулей>;

Раздел подключения мо-

дулей

 

Label <список меток>;

 

Const <имя константы>=<значение>;

 

Type <имя типа>=<определение типа>;

Описательная часть

Var <имя переменной>:<тип>;

 

Procedure <описание процедур>;

 

Function <описание функций>;

 

Begin

 

<оператор 1>;

 

<оператор 2>;

Исполнительная часть

...

(тело программы)

<оператор N>;

 

End.

 

В Паскале блок операторов начинается со служебного слова begin. Конструкция begin … end называется операторными скобками. Операторы, находящиеся внутри конструкции begin … end, считаются одним составным оператором.

Каждый блок завершает зарезервированное слово End (перед End «точка с запятой» может не ставиться). Вся программа завершается словом End с точкой.

Пример:

program MyFirstProgram; var

a,b: integer; c: real;

begin

Readln(a,b); c := a/b; Writeln(c)

end.

5

3. Идентификаторы и зарезервированные слова

Имена переменных, констант, меток, типов, модулей, процедур и функций, используемых в программе, называются идентификаторами. Имена задает разработчик программы. На имена (идентификаторы) накладываются некоторые ограничения, такие как невозможность использования ключевых (служебных) слов, например integer или var. Идентификатор должен начинаться с буквы и может содержать буквы латинского алфавита, цифры и знаки подчеркивания. Желательно выбирать мнемонические имена, т.е. несущие смысловую нагрузку, как, например, result, summa, cena. Использование осмысленных имен предпочтительнее, так как это делает программу более простой для понимания.

Служебные слова являются зарезервированными и не могут быть использованы в качестве идентификаторов. Список всех служебных слов языка Pascal ABC приведен ниже:

and

array

as

begin

break

case

class

const

constructor

continue

destructor

div

do

downto

else

end

exit

external

externalsync

file

finalization

for

forward

function

if

in

inherited

initialization

is

mod

not

of

or

private

procedure

program

property

protected

public

record

repeat

set

shl

with

shr

sizeof

string

xor

then

to

type

unit

until

uses

var

while

4. Константы

Постоянной (константой) называется величина, значение которой не изменяется в процессе исполнения алгоритма.

6

Раздел описания именованных констант начинается со служебного слова const, после которого следуют строки вида:

имя константы = значение;

или

имя константы : тип = значение; Например:

const

Pi = 3.14; Number = 10; Name = 'Victor'; Cifra = ['0'..'9'];

Mass: array [1..5] of integer = (1,3,5,7,9);

5. Переменные

Переменной называется величина, значение которой меняется в процессе исполнения алгоритма. Переменные — это некоторые данные, обрабатываемые в программе и имеющие имя.

Раздел описания переменных начинается со служебного слова var. При описании переменной в Паскале нужно указать ее имя (идентефикатор) и тип. Можно в одной строке описать несколько имен переменных (через запятую) одного типа; имена переменных отделяются от типа двоеточием. Каждое объявление завершается точкой с запятой.

Пример: var

a, b: integer; c, d: real; m, n: byte; s, s1: string;

ch, ch1: char; f: boolean;

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

7

Пример: begin

var a1, a2, a3: integer; end.

Кроме того, переменные-параметры цикла могут описываться в заголовке оператора for.

6. Типы данных.

Типы в PascalABC подразделяются на простые, структурированные, типы указателей, процедурные, последовательности и классовые.

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

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

К структурированным типам относятся массивы, строки, записи, кортежи, множества, файлы и классы.

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

Кроме того, для порядковых типов используются функции Ord, Pred и Succ, а также процедуры Inc и Dec.

6.1. Целые типы

Целые типы данных, их размер в байтах и диапазон значений приведены в табл. 2.

 

 

Таблица 2

 

Целые типы

Имя типа

Размер, байт

Диапазон значений

shortint

1

-128..127

smallint

2

-32768..32767

integer, longint

4

-2147483648..2147483647

8

 

 

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

 

 

 

Имя типа

Размер, байт

Диапазон значений

int64

8

-9223372036854775808..

9223372036854775807

 

 

byte

1

0..255

word

2

0..65535

longword, cardinal

4

0..4294967295

uint64

8

0..18446744073709551615

BigInteger

переменный

неограниченный

6.2. Вещественные типы

Вещественные типы данных, их размер в байтах и диапазон значений приведены в табл. 3.

 

 

Вещественные типы

Таблица 3

 

 

 

 

Размер,

Количество

 

 

Тип

значащих

Диапазон значений

 

байт

цифр

 

 

 

 

 

 

real

8

15-16

-1.8∙10308

.. 1.8∙10308

double

8

15-16

-1.8∙10308

.. 1.8∙10308

single

4

7-8

-3.4∙1038

.. 3.4∙1038

decimal

16

28-29

-79228162514264337593543950335

.. 79228162514264337593543950335

 

 

 

Константы вещественного типа можно записывать как в форме с плавающей точкой, так и в экспоненциальной форме:

1.7;

2.5e3 (2500);

1.4e-1 (0.14).

6.3. Логический тип

Стандартный логический тип Boolean (размер 1 байт) представляет собой тип данных, любой элемент которого может принимать лишь два значения: True и False. При этом справедливы следующие условия:

9

False < True

Ord(False) = 0 (Функция Ord определяет порядковый номер аргумента)

Ord(True) = 1

6.4. Символьный тип

В языке Паскаль стандартный символьный тип Char определяет полный набор ASCII-символов. Занимает 1 байт. Функция Ord от величины типа Char дает код соответствующего символа. Сравниваются величины символьного типа по своим кодам. В языке PascalABC cимвольный тип char занимает 2 байта и хранит Unicode-символ.

6.5. Перечислимый тип

Определяется упорядоченным набором идентификаторов. Например:

type

Season = (Winter, Spring, Summer, Autumn); DayOfWeek = (Mon, Tue, Wed, Thi, Thr, Sat, Sun); Operat = (Plus, Minus, Mult, Divide);

Значения перечислимого типа занимают 4 байта.

При этом важно, в каком порядке перечислены идентификаторы при определении типа, так как первому идентификатору присваивается порядковый номер 1, второму — 2 и т. д. Один и тот же идентификатор можно использовать в определении только одного перечислимого типа.

6.6. Диапазонный тип

Представляет собой подмножество значений целого, символьного или перечислимого типа и описывается в виде a..b, где a – нижняя, b – верхняя граница интервального типа:

Пример: var

a: 0..10;

c:'a'..'n';

d:Mon..Sat;

10

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

6.7. Строковый тип

Тип string (строковый). Применяется при использовании текстовых данных в программе, состоит из набора последовательно расположенных символов char. По умолчанию под переменную типа string отводится 256 байт, при этом в нулевом байте хранится длина строки. То есть строки состоят не более, чем из 255 символов. Пример описания:

var s: string;

Можно явно указать количество символов для переменной в [ ]. Например:

var s: string [50];

В данном случае под переменную выделяется 50 символов. Допускается при записи выражений строкового типа применять данные, символьного типа (char). В этом случае эти данные воспринимаются как string. К отдельным символам строкового типа можно обратиться по номеру этого символа в

строке, аналогично индексу в массивах.

7. Комментарии к программе

В программе может присутствовать текст, написанный разработчиком для пояснения к программе. Этот текст называется «комментарием к программе».

Комментарии заключаются между скобками {…}, (*…*) или пишутся после символов // (слеш). Комментарии не воспринимаются компьютером и не обрабатываются программой.

Некоторые комментарии могут содержать в себе другие. Это удобно, например, при отладке программы, когда нужно закоментарить большой фрагмент программы. По приоритету от высокого к низкому:

(* это — комментарий *)

{ это — тоже комментарий }

11

// это — тоже комментарий

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

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

рандами.

В PascalABC имеются следующие операции: @, not, ^, *, /, div, mod, and, shl, shr, +, –, or, xor, =, >, <, <>, <=, >=, as, is, in, а также операция new и операция приведения типа.

Операции @, –, +, ^, not, операция приведения типа и операция new являются унарными (имеют один операнд), остальные являются бинарными (имеют два операнда), операции

+(сложения) и – (вычитания) являются бинарными, операции

+(знак положительного числа) и – (знак отрицательного числа) являются унарными.

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

Карифметическим относятся бинарные операции +, –, *,

/для вещественных и целых чисел, бинарные операции div и mod для целых чисел и унарные операции + и – для вещест-

венных и целых чисел.

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

Операции DIV и MOD:

x div y — результат целочисленного деления x на y (точнее, x div y = x / y, округленное до ближайшего целого по направлению к 0;

x mod y — остаток от целочисленного деления x на y (точнее, x mod y = x – (x div y) * y).

12

8.2. Логические (булевы) операции

К логическим относятся бинарные операции and, or и xor, а также унарная операция not. Эти операции выполняются с использованием операндов типа boolean и возвращают значение типа boolean.

8.3. Операции отношения (сравнения)

Операции отношения также являются логическими. Их можно использовать для проверки отношений между переменными: a < b, c >= d, x = y и т. д. Над данными типа real, integer, char, string можно выполнять следующие операции отношения

(сравнения):

 

=

равно;

<>

не равно;

<меньше;

>больше;

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

В операциях сравнения должны участвовать операнды одного типа. Исключение сделано только в отношении данных числовых типов real и integer, которые могут сравниваться друг с другом. Результат применения операции отношения к любым операндам имеет тип boolean.

8.4. Строковые операции

Основной операцией, применяемой к строковым и символьным операндам, помимо операций отношения <, >, <=, >=, =, <>, является операция конкатенации («+», слияния). Ее результат имеет строковый тип. Например, 'a' + 'b' = 'ab' ('пол' + 'нота' = 'полнота'). Поскольку строки могут содержать максимум 255 символов, и если сливаются строки суммарной длины больше 255 символов, то программа завершается сообщением об ошибке:

» Ошибка: произошло переполнение строки при выполнении операции "+".

13

8.5. Приоритет операций

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

ются действия в них.

 

 

@, not, &

1

(высший)

*, /, div, mod, and, shl, shr

2

 

+, –, or, xor

3

 

=, <>, <, >, <=, >=, in

4

(низший)

Порядок действий при вычислении значения выражения:

1)вычисляются значения в скобках;

2)вычисляются значения функций;

3)выполняется унарные операции (унарный минус — смена знака);

4)выполняются операции умножения и деления (в том числе целочисленного деления и нахождения остатка от деления);

5)выполняются операции сложения и вычитания.

9. Стандартный математические функции

Стандартные математические функции, используемые в языке Паскаль, приведены в табл. 4.

 

 

 

Стандартные функции

Таблица 4

 

 

 

 

Математич.

Запись фор-

Математич.

Запись фор-

форма записи

мулы в Пас-

форма записи

мулы в Пас-

 

 

 

каль

 

каль

|x|

abs (x)

[x]

trunc (x)

x2

sqr (x)

π

pi

 

 

 

sqrt (x)

ln x

ln (x)

 

 

 

sin x

sin (x)

ex

exp (x)

cos x

cos (x)

xn

exp (a * ln (x))

arctg x

arctan (x)

 

при x > 0

14

10. Базовые операторы 10.1. Оператор присваивания

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

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

Он служит для определения или переопределения значения переменной. В случае переопределения, новое значение переменной, записывается в ячейки с именем переопределяемой переменной, а прежнее значение стирается.

Пример: a := 1000; b := 5;

a := a + b;

Исходное значение переменной а 1000, конечное

1005.

10.2. Операторы ввода/вывода Оператор ввода позволяет указанным переменным при-

своить значения, вводимые с клавиатуры:

Read(<список переменных>) — после ввода данных и нажатия клавиши <Enter> курсор остается в прежней строке;

Readln(<список переменных>) — после ввода данных и нажатия клавиши <Enter> курсор переходит на новую строку.

Пример: Readln(x); или Readln(x,y);

Оператор вывода используется для вывода на экран:

1)пояснений: Writeln('<Комментарий>');

2)значений переменных в бесформатном виде: Writeln(<имя переменной>);

3)значений переменных в форматированном виде: Writeln(<имя переменной>:<ширина поля выво-

да>:<число цифр после запятой>); 4) допускается также одновременный вывод пояснений и

значний.

Примеры:

1)Writeln('Введите x');

2)Writeln(y);

3)Writeln(y:7:4);

15

4) Writeln('При x =', x:5:1,' y=', y:7:4);

Также, как и для оператора ввода, допускается два варианта оператора вывода: Write и Wtiteln — соответственно, без перевода и с переводом курсора на новую строку после нажатия клавиши <Enter>.

МЕТОДИЧЕСКИЕ УКАЗАНИЯ ПО ВЫПОЛНЕНИЮ ЛАБОРАТОРНОЙ РАБОТЫ

1.Изучить теоретический материал.

2.Для задачи, выбранной в соответствии с вариантом, разработать алгоритм решения и описать его графическим способом (блок-схема).

3.Написать программу на языке Паскаль.

4. Оформить отчет.

ВАРИАНТЫ ЗАДАНИЙ

1.Написать программу вычисления площади параллело-

грамма.

2.Написать программу вычисления площади поверхности параллелепипеда.

3.Написать программу вычисления объема цилиндра.

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

5.Написать программу вычисления площади прямоугольника, если известна длина основания и высота.

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

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

8.Написать программу вычисления стоимости поездки на автомобиле на дачу (туда и обратно). Исходными данными являются: расстояние до дачи (в километрах); количество бен-

16

зина, которое потребляет автомобиль на 100 км пробега; цена одного литра бензина.

9.Написать программу вычисления площади поверхности цилиндра.

10.Написать программу пересчета расстояния из верст в километры (1 верста равняется 1066,8 м).

11.Написать программу пересчета веса из фунтов в килограммы (1 российский фунт равен 409,5 г).

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

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

14.Написать программу, которая преобразует введенное

склавиатуры число, записанное в виде десятичной дроби в денежный формат. Например, число 12.5 должно быть преобразовано к виду 12 руб. 50 коп.

15.Написать программу, которая вычисляет площадь

треугольника, если известны координаты его вершин.

16. Составить программу расчета значения функции Z = |3 ех+3 – 2 ln ху| + 1,8х2 + 1 при любых значениях х и у. Результат вывести в виде: при х= … и у=… z=…

17. Составить программу расчета значения функции Z = tg х3 – |2 sin х2у + 7.8 cos х| + 10 при любых значениях х и

у. Результат вывести в виде: при х= … и

у=… z=…

18. Составить программу расчета

значения функции

Z = (х4 – 2 ctg х2у2) / |8х2 – 5 arctg у| при любых значениях х и

у. Результат вывести в виде: при х= … и

у=… z=…

19. Составить программу расчета

значения функции

Z = tg х5 – 21 ctg ху2 / (18 sin х – 13 cos у + 11) при любых зна-

чениях х и у. Результат вывести в виде: при х= … и

у=…

z=…

 

 

 

20. Составить программу

расчета

значения

функции

Z = (2eх-4 – |sin х2у| )/( 2.1ctg х2 +

10.2) при любых значениях х

и у. Результат вывести в виде: при х= … и

у=…

z=…

17

КОНТРОЛЬНЫЕ ВОПРОСЫ

1.Что такое алфавит языка?

2.Какие символы включает в себя алфавит языка Пас-

каль?

3. Из каких разделов состоит программа на языке Пас-

каль?

4.Какие разделы присутствуют в блоке описаний программы на языке Паскаль?

5.Что такое идентификаторы и зарезервированные слова?

6.Что представляют собой константы? Как они описываются в программе на языке Паскаль?

7.Что такое «переменная»? Как переменные описываются в программе на языке Паскаль?

8.Приведите классификацию типов данных.

9.Перечислите целые типы данных и их характеристики.

10.Перечислите вещественные типы данных и их характеристики.

11.Охарактеризуйте логический тип данных.

12.Охарактеризуйте символьный тип данных.

13.Что представляет собой перечислимый тип данных?

14.Что представляет собой диапазонный тип данных?

15.Охарактеризуйте строковый тип данных.

16.Для чего нужны и как задаются комментарии в программе на языке Паскаль?

17.Какие операции имеются в языке PascalABC?

18.Перечислите и опишите основные арифметические операции.

19.Перечислите и опишите основные логические опе-

рации.

20.Перечислите и опишите основные операции отно-

шений.

21.Перечислите и опишите основные строковые опе-

рации.

22.Опишите приоритеты выполнения операций.

18

23.Опишите стандартные математические функции и их формат в языке Паскаль.

24.Опишите назначение и особенности использования операторов ввода/вывода на языке Паскаль.

ЛАБОРАТОРНАЯ РАБОТА № 6 ПРОГРАММИРОВАНИЕ РАЗВЕТВЛЯЮЩИХСЯ АЛГОРИТМОВ. ОПЕРАТОРЫ IF, CASE, GOTO

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

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

1)структуру разветвляющегося алгоритма;

2)структуру оператора условного перехода IF;

3)структуру оператора выбора CASE;

4)назначение и условия использования оператора безусловного перехода GOTO.

ТЕОРЕТИЧЕСКИЙ МАТЕРИАЛ ДЛЯ ДОМАШНЕГО ИЗУЧЕНИЯ

1. Разветвляющиеся алгоритмы Разветвляющейся (ветвящейся) называется конструк-

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

Структура ВЕТВЛЕНИЕ существует в двух основных вариантах: а) полное ветвление; б) неполное ветвление.

Полное ветвление

Предполагает выполнение действий для обеих веток в алгоритме (рис. 1):

Если [условие], то [действие 1], иначе [действие 2]

19

Рис. 1. Блок-схема полного ветвления

Неполное ветвление

Предполагает выполнение действий только на одной ветви алгоритма (вторая отсутствует) (рис. 2):

Если [условие], то [действие]

Рис. 2. Блок-схема неполного ветвления

Пример разветвляющегося алгоритма

 

1

 

 

Составить алгоритм вычислен я значения функции.

,

при < 0

 

= функции, 0 ≤ ≤усложняется16

тем, что на

Нахождение значения4,

при > 16

 

области определения функция состоит из элементарных, непрерывных на заданном участке, функций. Прежде чем вычислить значение y, необходимо проверить принадлежность введенного х одному из заданных участков. Блок-схема решения приведена на рис. 3.

20

Рис. 3. Блок-схема алгоритма из примера

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

Оператор IF реализует алгоритмическую конструкцию ВЕТВЛЕНИЕ и изменяет порядок выполнения операторов в зависимости от истинности или ложности некоторого условия.

Полная форма условного оператора выглядит следую-

щим образом:

if условие then оператор1 else оператор2

В качестве условия указывается какое-либо логическое выражение. Если условие оказывается истинным, то выполняется оператор1, в противном случае выполняется оператор2.

Краткая форма условного оператора имеет вид: if условие then оператор

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

В случае конструкции вида

21

if условие1 then

if условие2 then оператор1 else оператор2

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

if условие1 then begin

if условие2 then оператор1 end

else оператор2

Пример. Программа вычисления зарплаты в зависимости от стажа.

program ZrPl; var

ST, ZP : integer; begin

Write(‘Введите Ваш стаж работы : ‘);

Readln(ST);

if ST<5 then ZP:=15000

else if ST<=15 then ZP:=25000 else ZP:=25000+(ST-15)*1000;

Writeln(‘Ваша зарплата составляет ’,ZP,’ рублей’);

Readln end.

3. Оператор выбора CASE

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

22

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

case переключатель of список выбора 1: оператор1;

...

список выбора N: операторN; else оператор0

end;

Переключатель представляет собой выражение порядкового типа (целого, символьного, перечислимого или интервального), а списки выбора содержат константы совместимого типа. Как и в операторе if, ветвь else может отсутствовать. В отличие от оператора if перед словом else точку с запятой можно ставить.

Оператор case (в случае) работает следующим образом. В списке выбора проверяется на совпадение текущее значение переключателя и меток списка, и если найдено совпадение, то выполняется оператор, соответствующий данной строке списка. Если же значение переключателя не найдено ни в одной строке, то выполняется оператор else. В случае, если ветвь else отсутствует, оператор case не выполняет никаких действий, а управление передается внешнему оператору, следующему за конструкцией CASE.

Список выбора состоит либо из одной константы, либо из диапазона значений вида a..b (константа a должна быть меньше константы b). Можно также перечислить несколько констант или диапазонов через запятую:

case DayOfWeek of

1..5: Writeln('Рабочий день'); 6,7: Writeln('Выходной'); end;

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

23

case i of

1,5: Write(a);

4..9: Write(b); end;

программа завершится сообщением об ошибке: "Ошибка: Пересечение диапазонов меток в операторе

case".

4. Оператор безусловного перехода GOTO

Оператор безусловного перехода goto используется для изменения естественной последовательности выполнения программы, и имеет следующую форму:

goto метка

Содержимое строки можно интерпретировать как: перейти к <метке> Он передает выполнение программы оператору, поме-

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

label1: оператор

Метки должны быть описаны в разделе меток с использованием служебного слова label:

label 1,2,3;

Например, в результате выполнения программы: label 1,2;//метки

begin i:=6;

2: if i<0 then goto 1;//условие перехода к метке 1 Write(i); //выводим значение i

Dec(i); //увеличиваем i на 1 goto 2; //переходим к метке 2 1: //метка 1

end.

будет выведено 654321.

24