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

Pascal Themes 1-4

.pdf
Скачиваний:
29
Добавлен:
15.04.2015
Размер:
379.27 Кб
Скачать

Федеральное агентство по образованию

ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

РЯЗАНСКИЙ ГОСУДАРСТВЕННЫЙ РАДИОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

ОСНОВЫ ПРОГРАММИРОВАНИЯ В СРЕДЕ

ТУРБО ПАСКАЛЬ 7.0

Методические указания по дисциплине «Информатика»

УДК 681.3.06

Основы программирования в среде Турбо Паскаль 7.0: Методи-

ческие указания / Рязан. гос. радиотехн. ун-т.; Сост. В.В. Белов, В.И. Чистякова. Рязань, 2007. 96 с.

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

Предназначено для студентов направления 654100 и 550700 (спе-

циальности 200100, 200300, 200400, 071400, 550700), изучающих дис-

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

Материалы пособия полностью соответствуют оригинальной документации по языку Турбо Паскаль 7.0 фирмы Borland Inc.

Компьютерный набор и верстка В.И. Чистяковой.

Данные, величина, значение, виды величин, тип, операторы, ветвления, циклы, массивы, файлы, строки, записи, процедуры, функции, модули

Печатается по решению методического совета Рязанского государственного радиотехнического университета.

Рецензент: кафедра вычислительной и прикладной математики Рязанского государственного радиотехнического университета (зав. кафедрой д-р техн. наук, проф. А.Н. Пылькин)

Рязань 2007

 

 

1

 

 

 

 

 

 

 

Содержание

 

ТЕМА 1. ВВЕДЕНИЕ В ПАСКАЛЬ ..........................................................................

3

1.

Величины в Турбо Паскале ...............................................................................

3

2.

Классификация типов величин .........................................................................

4

3.

Порядковые типы ...............................................................................................

4

4.

Целые типы .........................................................................................................

5

5.

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

6

6.

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

6

7.

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

6

8.

Отрезки типов .....................................................................................................

6

9.

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

6

 

10. Функция SizeOf .................................................................................................

7

ТЕМА 2. ЛИНЕЙНЫЕ ВЫЧИСЛИТЕЛЬНЫЕ ПРОЦЕССЫ .........................................

7

1.

Определение........................................................................................................

7

2.

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

8

3.

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

8

4.

Порядок выполнения операций в выражении .................................................

9

5.

Процедура ввода с клавиатуры ......................................................................

10

6.

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

11

7.

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

12

ТЕМА 3. РАЗВЕТВЛЯЮЩИЕСЯ ВЫЧИСЛИТЕЛЬНЫЕ ПРОЦЕССЫ .........................

13

1.

Разветвления в программах ...........................................................................

13

2.

Оператор ветвления if ......................................................................................

13

3.

Оператор ветвления case ................................................................................

14

ТЕМА 4. ЦИКЛИЧЕСКИЕ ВЫЧИСЛИТЕЛЬНЫЕ ПРОЦЕССЫ ..................................

16

1.

Циклы ..................................................................................................................

16

2.

Оператор цикла while .......................................................................................

17

3.

Оператор цикла repeat .....................................................................................

18

4.

Оператор цикла for ..........................................................................................

19

ТЕМА 5. МАССИВЫ ...........................................................................................

21

1.

Определение и атрибуты массива..................................................................

21

2.

Описание массива и обращения к его элементам ........................................

22

ТЕМА 6. ФАЙЛЫ................................................................................................

22

1.

Объявление файлов ........................................................................................

22

2.

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

23

3.

Стандартные процедуры и функции для всех типов файлов .....................

24

4.

Стандартные процедуры и функции для текстовых файлов ......................

25

5.

Ввод данных из текстового файла .................................................................

27

6.

Вывод данных в текстовый файл ...................................................................

29

7.

Форматированный вывод в текстовый файл ................................................

30

8.

Стандартные процедуры и функции для типизированных файлов ...........

31

 

Контрольные вопросы ...........................................................................................

33

ТЕМА 7. СТРОКИ ...............................................................................................

34

1.

Строковые константы .......................................................................................

34

2.

Строка типа string ............................................................................................

35

3.

Типизированные строковые константы .........................................................

36

4.

Присваивание значения строковой переменной ..........................................

36

5.

Ввод – вывод строк ..........................................................................................

37

6.

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

38

7.

Строковые процедуры .....................................................................................

39

8.

Строковые функции .........................................................................................

40

 

Контрольные вопросы ...........................................................................................

41

ТЕМА 8. ЗАПИСИ ...............................................................................................

42

1.

Описание записи ..............................................................................................

42

2.

Типизированные константы- и переменные-записи ....................................

43

2

3.

Оператор присваивания для записей ............................................................

43

4.

Доступ к полям записи .....................................................................................

43

5.

Оператор with ...................................................................................................

44

6.

Представление записи в памяти ЭВМ ...........................................................

44

7.

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

44

8.

Моделирование базы данных типизированным файлом записей .............

45

9.

Поиск в базе данных ........................................................................................

45

Контрольные вопросы ...........................................................................................

46

ТЕМА 9. ПРОЦЕДУРЫ И ФУНКЦИИ .....................................................................

46

1.

Общие сведения ...............................................................................................

46

2.

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

47

3.

Область действия и затенение имён в подпрограммах ..............................

47

4.

Виды подпрограмм в Паскале ........................................................................

48

5.

Формальные параметры ..................................................................................

49

6.

Замена формальных параметров фактическими ........................................

50

7.

Пример описания и использования процедуры ...........................................

50

8.

Пример описания и использования функции ................................................

51

9.

Способы передачи параметров в подпрограммы ........................................

51

10. Параметры-значения .....................................................................................

52

11. Параметры-переменные ...............................................................................

53

12. Параметры-константы ...................................................................................

54

13. Процедуры Halt и Exit ....................................................................................

56

Контрольные вопросы ...........................................................................................

56

ТЕМА 10. МОДУЛИ ............................................................................................

57

1.

Назначения модулей ........................................................................................

57

2.

Заголовок модуля ..............................................................................................

57

3.

Секция интерфейса ..........................................................................................

57

4.

Секция реализации модуля ............................................................................

58

5.

Секция инициализации ....................................................................................

59

6.

Использование модуля в основной программе ............................................

59

7.

Использование идентификаторов элементов модуля ................................

59

8.

Компиляция модулей .......................................................................................

60

9.

Стандартные модули .......................................................................................

60

Контрольные вопросы ...........................................................................................

 

62

БИБЛИОГРАФИЧЕСКИЙ СПИСОК .......................................................................

62

ЛАБОРАТОРНАЯ РАБОТА 1.

ПРОСТЕЙШИЕ ВЫЧИСЛЕНИЯ.

 

 

ВВОД-ВЫВОД ДАННЫХ ..........................................

63

ЛАБОРАТОРНАЯ РАБОТА 2.

ПРОГРАММИРОВАНИЕ РАЗВЕТВЛЕНИЙ

65

 

С ПОМОЩЬЮ ОПЕРАТОРА IF ..................................

ЛАБОРАТОРНАЯ РАБОТА 3.

ПРОГРАММИРОВАНИЕ РАЗВЕТВЛЕНИЙ

68

 

С ПОМОЩЬЮ ОПЕРАТОРА CASE .............................

ЛАБОРАТОРНАЯ РАБОТА 4.

ИССЛЕДОВАНИЕ ФУНКЦИИ

72

 

С ПОМОЩЬЮ ОПЕРАТОРОВ WHILE И REPEAT .........

ЛАБОРАТОРНАЯ РАБОТА 5.

ВЫЧИСЛЕНИЕ СУММ И ПРОИЗВЕДЕНИЙ

76

 

С ПОМОЩЬЮ ОПЕРАТОРА FOR ...............................

ЛАБОРАТОРНАЯ РАБОТА 6.

РАБОТА С МАССИВАМИ .........................................

79

ЛАБОРАТОРНАЯ РАБОТА 7.

ТЕКСТОВЫЕ ФАЙЛЫ .............................................

81

ЛАБОРАТОРНАЯ РАБОТА 8.

СТРОКИ.................................................................

83

ЛАБОРАТОРНАЯ РАБОТА 9.

МОДЕЛИРОВАНИЕ РАБОТЫ С БАЗОЙ ДАННЫХ .......

86

ЛАБОРАТОРНАЯ РАБОТА 10.

ПРОЦЕДУРЫ И ФУНКЦИИ ОБРАБОТКИ МАССИВОВ. 91

ЛАБОРАТОРНАЯ РАБОТА 11.

МОДУЛЬ ПОДПРОГРАММ ОБРАБОТКИ МАССИВОВ . 93

ПРИЛОЖЕНИЕ 1. КОДЫ ОСНОВНЫХ СИМВОЛОВ................................................

95

ПРИЛОЖЕНИЕ 2. СОДЕРЖАНИЕ ОТЧЁТА............................................................

96

3

Тема 1. ВВЕДЕНИЕ В ПАСКАЛЬ

1.Величины в Турбо Паскале

Данные – информация, представленная на машинном носителе ин-

формации в форме, пригодной для восприятия компьютером. Величина – носитель информации в программе. Физически вели-

чине соответствует ячейка памяти ЭВМ. Информация, хранимая в величине, называется её значением. Таким образом, значение величины – это содержимое ячейки памяти, отведённой под величину. Величины можно классифицировать по следующим признакам: 1) по способности изменять своё значение (профессионалы программирования называют этот признак режимом доступа); 2) по форме представления в программе; 3) по типу.

По способности изменять своё значение величины делятся на константы и переменные. Константы не могут менять своих значений (режим доступа Read only – только чтение), значения переменных изменяемы (режим доступа Read/Write – чтение и запись).

По форме представления в программе выделяют следующие виды величин: 1) константы; 2) переменные; 3) обращения к функциям; 4) элементы структурированных величин (массивов и записей); 5) выражения. Заметим, что по режимам доступа константы, обращения к функциям и выражения относятся к группе констант, а переменные, элементы массивов и записей – к группе переменных.

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

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

Переменные в программе представляются только своими идентификаторами.

Тип – характеристика величины, имеющая два уровня определения

– внешний и внутренний.

На внешнем уровне тип – это множество допустимых значений

величины и совокупность операций, определённых для величин данного типа.

4

На внутреннем уровне тип – это формат представления значения

величины данного типа в памяти ЭВМ, определяющий: 1) длину ячейки памяти, отводимой под величину; 2) способ двоичного кодирования значения; 3) способ декодирования (интерпретации) двоичного содержимого ячейки памяти величины.

Классификация величин по типу приведена ниже.

2.Классификация типов величин

Величины в Турбо Паскале могут иметь следующие типы.

 

 

 

 

 

Типы величин

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Простые

 

 

 

Полуструкту-

 

Структуриро-

 

 

(скалярные)

 

 

 

 

рированные

 

 

ванные

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Строки

 

 

 

Массивы

Порядковые

 

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

 

 

 

 

 

 

 

 

 

Указатели

 

 

 

Записи

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Множества

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Целые типы

Файлы

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

Объекты

Логический тип Перечисляемые типы Отрезки типов

3.Порядковые типы

Порядковые типы представляют собой подмножество простых ти-

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

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

2.Для величин порядкового типа определены следующие стандартные функции:

5

Ord(x) – возвращает порядковый номер значения x;

Pred(x) – возвращает значение, предшествующее значению x;

Succ(x) возвращает значение, следующее за значением x.

Примеры.

k:=Ord(3);

{ k=3

}

k:=Pred(3);

{ k=2

}

k:=Succ(3);

{ k=4

}

k:=Ord( B );

{ k=66

}

c:=Pred( B );

{ c= A

}

c:= Succ( B );

{ c= C

}

3. Для переменных порядкового типа определены следующие стандартные процедуры:

Dec(x, k) – уменьшает значение переменной x, таким образом, что её порядковое значение уменьшается на k;

Inc(x, k) – увеличивает значение переменной x, таким образом, что её порядковое значение увеличивается на k.

Если k=1, то его можно не указывать в обращении к этим процедурам, записывая просто Dec(x), Inc(x).

Примеры.

n:=3;

{ n=3

}

Dec(n, 2);

{ n=1

}

Dec(n);

{ n=0

}

Inc(n, 2);

{ n=2

}

Inc(n);

{ n=3

}

c:= D ;

{ c= D

}

Dec(c, 2);

{ c= B

}

Dec(c);

{ c= A

}

Inc(c, 2);

{ c= C

}

Inc(c);

{ c= D

}

Замечание. При использовании функций Pred, Succ и процедур Dec, Inc следует следить за тем, чтобы результаты их работы не выходили за пределы допустимых диапазонов значений соответствующих типов.

4.Целые типы

В Турбо Паскале имеется пять встроенных целочисленных типов.

Иденти-

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

Длина ячей-

 

фикатор

ки

Формат

величины

типа

в байтах

 

 

 

Shortint

–128 .. 127

1

со знаком

Integer

–32768 .. 32767

2

со знаком

Longint

–2147483648 .. 2147483647

4

со знаком

Byte

0 .. 255

1

без знака

Word

0 .. 65535

2

без знака

Константы целого типа – это обычные целые числа: –15, 724, 3276.

6

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

Идентификатор типа – Char. Множеством значений этого типа яв-

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

Функция Ord(c), где с – значение типа Char, возвращает порядковый номер символа с в таблице кодов. Функция Chr(k), где k – значение целого типа, возвращает символ с порядковым номером k.

Константы символьного типа представляют собой одиночные символы, заключённые в апострофы: @ , A , B , 1 , 2 , a , b , д , ж , ф .

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

Идентификатор типа – Boolean. Константы логического типа обо-

значаются ключевыми словами False и True. Величина логического типа занимает один байт памяти.

Между значениями логических констант имеют место следующие отношения: False<True; Ord(False)=0; Ord(True) = 1; Succ(False) =

True; Pred(True) = False.

Логический тип является встроенным перечисляемым типом.

7.Перечисляемые типы

Перечисляемые типы определяют упорядоченные наборы иденти-

фикаторов, которые представляют собой константы этих типов.

Пример: TSeason = (Winter, Spring, Summer, Autumn);

Здесь Spring является константой типа TSeason.

Величина перечисляемого типа занимает один байт памяти. Функция Ord с аргументом – значением перечисляемого типа воз-

вращает целое число, соответствующее порядковому номеру этого значения в перечислении при нумерации с нуля: Ord(Winter) возвращает 0, Ord(Spring) возвращает 1 и т.д.

8.Отрезки типов

Отрезок типа представляет собой диапазон значений из порядково-

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

C1..C2

где C1, C2 – константы целого, символьного, логического или перечисляемого типа, удовлетворяющие условию C1 C2. C1 – наименьшее, C2

– наибольшее значения в диапазоне. Таким образом, диапазон включает наименьшее и наибольшее значения, разделенные двумя точками.

Примеры: 0 .. 99; –100 .. 100; Spring .. Autumn.

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

В Турбо Паскале имеется пять встроенных вещественных типов.

7

Идентифика-

Диапазон

Число

Длина

положительных

десятичных

ячейки

тор типа

значений величины

значащих цифр

в байтах

 

Real

2,9 10–39 .. 1,7 1038

11

– 12

6

Single

1,5 10–45 .. 3,4 1038

7

– 8

4

Double

5,0 10–324 .. 1,7 10308

15

– 16

8

Extended

3,4 10–4932 .. 1,1 104932

19

– 20

10

Comp

–263 + 1 .. 263 – 1

19

– 20

8

Во множество всех значений величины вещественного типа входят: 1) приведенный в таблице диапазон положительных значений, 2) такой же (но инвертированный) диапазон отрицательных значений, и 3) значение 0. Например, для типа Real диапазон отрицательных значений имеет вид: –1,7 1038 .. –2,9 10–39.

Значащими цифрами называются все цифры в записи числа, начиная с первой, отличной от нуля.

Константы вещественных типов имеют две формы записи: 1) обыкновенная десятичная дробь с точкой вместо традиционной запятой: 12.75, –0.005, 2315.896; 2) показательная или научная форма – в виде числа с последующей степенью десяти: 3.25E3, 1.74E–5, 321E–28, 2E32 (указанные константы соответствуют числам: 3,25 103; 1,74 10–5; 321 10–28; 2 1032). Как видим, буква E в записи вещественных констант заменяет символы «10» в их обычной математической записи, и цифры показателя степени записываются строчными цифрами. Надстрочных и подстрочных символов в Паскале нет.

10.Функция SizeOf

Встроенная функция SizeOf(x) возвращает количество байтов, занимаемых величиной. Аргументом этой функции может быть имя типа или имя переменной. Примеры: SizeOf(Byte) = 1, SizeOf(Longint) = 4,

SizeOf(Real) = 6, SizeOf(TSeason) = 1. Определение TSeason см в п. 7.

Тема 2. ЛИНЕЙНЫЕ ВЫЧИСЛИТЕЛЬНЫЕ

ПРОЦЕССЫ

1.Определение

Вычислительные процессы, в которых все действия выполняются

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

8

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

Назначение: присваивание переменной вычисляемого значения.

Синтаксическая форма:

v: e

где v – имя переменной; e – выражение, тип которого совместим по присваиванию с типом переменной v.

Изображение оператора в схеме алгоритма:

v = e

Этот блок в ГОСТ 19.701-90 называется «Процесс».

Действие оператора:

1)вычисляется выражение e;

2)полученное значение приводится к типу переменной v;

3)результат приведения присваивается переменной v.

Замечания.

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

Тип переменной v

Тип выражения e

любой целый

любой целый

любой вещественный

любой целый и любой вещественный

символьный

символьный

логический

логический

b. Для получения правильного результата присваивания значение выражения e должно входить во множество значений типа переменной v.

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

d. В простейшем случае выражение может состоять из одной величины, например, константы или переменной, поэтому допустимы следующие операторы присваивания: b:=5; a:=b; и т.д.

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

Турбо Паскаль содержит большое количество встроенных (стандартных) функций, предназначенных для работы с данными различных типов. Некоторые из них (Ord, Pred, Succ, Chr, SizeOf) уже рассмотрены выше. При программировании арифметических вычислений часто используются функции, приведённые в следующей таблице. Буква I обозначает любой целый тип, R – любой вещественный. Аргумент функции записывается в круглых скобках после имени функции.

9

 

Обращение

 

 

Тип

 

Тип

 

 

 

 

 

Математическое

 

 

 

 

возвращаемого

 

 

 

 

 

обозначение,

 

к функции

 

 

аргумента

 

 

 

 

 

 

 

 

 

 

значения

 

 

 

 

 

пояснение

 

 

 

 

 

 

 

 

 

 

 

 

Sin(x)

 

R

R

sin(x)

 

Cos(x)

 

R

R

cos(x)

 

ArcTan(x)

 

R

R

arctg(x)

 

Ln(x)

 

R

R

ln(x)

 

Exp(x)

 

R

R

ex

 

Sqr(x)

 

R, I

Совпадает с типом

x2

 

 

 

 

 

 

аргумента

 

 

 

 

 

 

 

Sqrt(x)

 

R

R

 

 

 

 

 

 

 

 

 

 

x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Abs(x)

 

R, I

Совпадает с типом

 

x

 

 

 

 

 

 

 

 

 

 

 

 

аргумента

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Int(x)

 

R

R

целая часть числа

 

Frac(x)

 

R

R

дробная часть числа

 

Round(x)

 

R

I

[x] – ближайшее целое,

 

 

 

 

 

 

 

т.е. операция округления;

 

Trunc(x)

 

R

I

результат тот же, что и

 

 

 

 

 

 

 

Int(x), но имеет целый

 

 

 

 

 

 

 

тип

Замечание. Турбо Паскаль не содержит некоторых часто используемых математических функций. В следующей таблице приведены формулы эквивалентных вычислений.

 

Функция

 

Эквивалентная формула

 

Запись в программе

 

tg(x)

 

 

sin(x)

 

 

 

 

Sin(x)/Cos(x)

 

 

 

cos( x)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

 

 

 

 

 

arcsin(x)

 

arctg

 

 

 

 

 

 

 

ArcTan(x/Sqrt(1–Sqr(x)))

 

 

 

 

 

 

 

 

 

 

 

 

 

1 x

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1 x

2

 

 

 

 

 

 

 

 

 

 

 

 

arccos(x)

 

arctg

 

 

 

 

 

 

 

ArcTan(Sqrt(1–Sqr(x))/x)

 

 

 

x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ax

 

 

ex ln(a)

 

 

 

Exp(x*Ln(a))

 

logbx

 

 

 

ln(x)

 

 

 

 

Ln(x)/Ln(b)

 

 

 

 

ln(b)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4.Порядок выполнения операций в выражении

При вычислении выражений, прежде всего, вычисляются значения

функций, входящих в выражение. Затем выполняются операции в соответствии с приоритетами. Операции с равными приоритетами выполняются слева направо.

10

В Турбо Паскале установлены следующие приоритеты операций:

1)унарные (с одним операндом) операции: «–», not, @ – арифметический минус, логическое отрицание, получение адреса;

2)мультипликативные (аналогичные умножению) операции: *, /, div, mod, and, shl, shr – умножение, вещественное деление, деление нацело, остаток от деления, логическое умножение (операция И), сдвиг влево и сдвиг вправо соответственно;

3)аддитивные (аналогичные сложению) операции: +, –, or, xor – сложение, вычитание, логическое сложение (операция ИЛИ), операция Исключающее ИЛИ соответственно;

4)операции отношения: =, <, <=, >, >=, <>, in – равно, меньше, меньше или равно, больше, больше или равно, не равно, «принадлежит множеству» соответственно.

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

7

5

2

1

6

4

3

1.33E5 / (285 + ln(x–3) – 9 cos(x))

5. Процедура ввода с клавиатуры

Назначение: присваивание переменным значений, набираемых на клавиатуре.

Синтаксическая форма обращения к процедуре ввода:

Readln(v1, v2, , vk)

где v1, v2, ,vk – имена переменных, которым необходимо присвоить значения; указанная совокупность имён называется списком ввода. Переменные списка ввода могут иметь следующие типы: числовые, символьный, строковый. Заметим, что тип Boolean не допустим.

Изображение обращения к процедуре в схеме алгоритма:

Ввод v1, v2, , vk

Этот блок в ГОСТ 19.701-90 называется «Данные».

Действие процедуры:

1) пользователь набирает на клавиатуре константы, типы которых совместимы по присваиванию с типами соответствующих переменных v1, v2, ,vk; набираемые константы отображаются на дисплее;

2) значения набранных констант присваиваются соответствующим (по порядку следования) переменным v1, v2, ,vk.

11

Замечания.

a.Значения, присваиваемые переменным v1, v2, ,vk, поступают в исполняемую программу извне (с клавиатуры), поэтому рассматриваемый процесс называется вводом значений переменных.

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

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

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

Назначение: отображение значений величин на экран дисплея.

Синтаксические формы обращений к процедурам вывода:

Write(e1, e2, , e k)

Writeln(e1, e2, , ek)

где e1, e2, , e k – выражения, значения которых необходимо отобразить на экран дисплея; указанная совокупность выражений называется списком вывода. Выражения списка вывода могут иметь следующие типы: числовые, символьный, логический, строковый. Заметим, что в отличие от процедуры ввода логический тип (Boolean) допустим.

Изображение обращения к процедуре в схеме алгоритма:

Вывод e1, e2, , ek

Действие процедуры:

1)вычисляются значения выражений e1, e2, , e k;

2)полученные значения отображаются на дисплее в порядке сле-

дования выражений e1, e2, , e k.

Замечания.

a.Поскольку значения выражений e1, e2, , e k пересылаются из исполняемой программы вовне – на экран дисплея, то действие, выполняемое рассматриваемой процедурой, называется выводом значений.

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

следующее обращения к процедуре вывода: Writeln(3, c, a, b, 2*2);

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

12

d.Процедуры Write и Writeln отличаются следующим. После вывода последнего значения процедурой Write курсор остаётся за последним символом, и новый вывод начнётся с этого знакоместа, т.е. вывод продолжится в «ту же строку». После вывода последнего значения процедурой Writeln курсор принудительно перемещается на новую строку, и последующий вывод начнётся с этой новой строки.

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

ком. Операторы Writeln(1/3,′c); Writeln(1/3:10:5, c:7) выведут:

_3 . 33333333333333E–0001c

Первая строка вывода

___0 . 33333______ c

Вторая строка вывода

123456789012345678901234

Номера позиций в строке

Символом подчеркивания «_» в примере – это пробел.

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

Программа на Паскале в общем случае состоит из нескольких фай-

лов. Один из них содержит главную программу, а остальные – модули. Главная программа состоит из следующих элементов:

заголовка, начинающегося с зарезервированного слова program

исодержащего имя главной программы;

предложения uses, содержащего имена модулей, подключаемых к данной программе;

раздела описаний, состоящего из подразделов описаний меток, констант, типов, переменных и подпрограмм, начинающихся с зарезервированных слов label, const, type, var соответственно; описания подпрограмм начинаются с заголовка function либо procedure;

раздела операторов, начинающегося со слова begin;

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

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

13

Тема 3. РАЗВЕТВЛЯЮЩИЕСЯ ВЫЧИСЛИТЕЛЬНЫЕ

ПРОЦЕССЫ

1. Разветвления в программах

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

В схемах алгоритмов ветвление изображается с помощью блока, называемого в ГОСТ 19.701-90 блоком «Решение». В программах на Паскале ветвления реализуются с помощью операторов if и case, называемых условным оператором и оператором выбора соответственно.

2.Оператор ветвления if

Назначение: организация ветвления вычислительного процесса.

Синтаксические формы оператора:

полная форма

сокращенная форма

if e then s1 else s2

if e then s

где if , then, else – зарезервированные слова (их смысл заранее известен компилятору и не может быть изменён программистом); e – выражение логического типа; s1 , s2 , s – одиночные или составные операторы. Любой из операторов s1 , s2 , s в свою очередь может быть опе-

ратором if.

Изображение оператора в схеме алгоритма:

полная форма

 

сокращенная форма

Да

e

Нет

Нет

 

 

e

 

 

 

ss1

s2

Да

s

14

Действие оператора:

1)вычисляется выражение e;

2)если получено логическое значение True, то выполняется опера-

тор s1, после чего действие оператора if заканчивается и управление передаётся оператору, следующему за оператором if;

3)если получено логическое значение False, то выполняется опе-

ратор s2, после чего действие оператора if заканчивается и управление передаётся оператору, следующему за оператором if.

Замечания.

a. Если в ветвях then или else необходимо разместить не один, а несколько операторов, то необходимо использовать составной оператор – последовательность операторов, помещённую в операторные скобки begin и end, например

if x>0

then begin

Writeln( x положительно ); y:=ln(x); end

else begin

Writeln( x отрицательно ); y:=exp(x);

end;

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

c.Ветвь else в операторе if является факультативной, т.е. может отсутствовать. При этом если e = False, то действие оператора if сразу же заканчивается и управление передаётся оператору, следующему за оператором if.

3.Оператор ветвления case

Назначение: организация ветвления вычислительного процесса.

Синтаксические формы оператора:

полная форма

сокращенная форма

case e of

c1 : s1 ; c2 : s2 ;

ck : sk ; else s ;

end

case e of

c1 : s1; c2 : s2 ;

ck : sk ; end

где case, of , else, end – зарезервированные слова; символы : и ; – обязательные синтаксические элементы; e – выражение порядкового типа; c1, c2, , ck – списки констант и/или диапазонов того же самого порядкового типа, что и тип выражения e; s1, s2, , sk, s – одиночные операторы.

 

15

 

Изображение оператора в схеме алгоритма:

полная форма

сокращенная форма

e

c1

c2

ck

else

s

e

c1

s1

c2

s2

ck

sk

s1

s2

sk

Действие оператора:

1)вычисляется выражение e;

2)сканируются (просматриваются) списки c1, c2, , ck;

3)если во время сканирования некоторого списка встречается константа, значение которой совпадает со значением выражения e, то выполняется оператор, помеченный этим списком, после чего действие оператора case заканчивается и управление передаётся оператору, следующему за оператором case;

4)если при сканировании списков не найдена константа, значение которой совпадает со значением выражения e, то выполняется оператор, размещённый за словом else , после чего действие оператора case заканчивается и управление передаётся оператору, следующему за оператором case.

Замечания.

a.Выражение e в учебной литературе часто называют селектором,

асписки c1, c2, , ck – метками;

b.Если в ветвях case необходимо разместить не одиночные опера-

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

c. Ветвь else в операторе case является факультативной, т.е. может отсутствовать. При этом если в списках c1, c2, , ck нет константы, значение которой совпадает со значением выражения e, то оператор case не выполняет никаких действий.

16

Тема 4. ЦИКЛИЧЕСКИЕ ВЫЧИСЛИТЕЛЬНЫЕ

ПРОЦЕССЫ

1.Циклы

Вычислительные процессы, в которых одна и та же группа дейст-

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

Вобщем случае каждый цикл имеет следующие элементы: 1) начальные установки; 2) тело цикла; 3) операция модификации параметра – обязательный элемент тела цикла; 4) условие повторения или прекращения повторений тела цикла.

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

Операция модификации параметра – это действие, изменяющее текущее значение параметра цикла. Она является частью тела цикла, и выделяется в самостоятельный элемент в силу особой важности. Без изменения параметра произойдёт зацикливание процесса, – неуправляемое («бесконечное») повторение тела цикла. Прервать такое повторение можно только вмешательством программиста, например, нажатием клавиш Ctrl+Break или Ctrl+С. При этом произойдёт искусственное прерывание процесса выполнения программы и её останов.

Условие повторения или прекращения повторений тела цикла син-

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

Втеории алгоритмов различают три разновидности реализации циклов: 1) циклы с предусловием; 2) циклы с постусловием; 3) циклы с параметром (управляющей переменной).

Всхемах алгоритмов циклы изображается либо с помощью обычного блока ветвления (блок «Решение»), либо с помощью блока, называемого в ГОСТ 19.701-90 «Граница цикла», и состоящего из двух частей, – отображающих начало и конец цикла. В учебной литературе циклы с параметром часто изображаются по устаревшему стандарту с помощью блока, называемого в ГОСТ 19.701-90 «Подготовка».

17

В программах на языке Паскаль циклы с предусловием, с постусловием и с параметром реализуются с помощью операторов while, repeat и for соответственно.

2.Оператор цикла while

Назначение: организация циклического вычислительного процесса

с предусловием.

Синтаксическая форма оператора: while e do s

где while, do – зарезервированные слова; e – выражение логического

типа; s – одиночный оператор.

Изображение оператора в схеме алгоритма:

Нет

e

Да

s

Действие оператора:

1)вычисляется выражение e;

2)если получено логическое значение True, то выполняется оператор s, после чего осуществляется переход на пункт 1 (к вычислению e);

3)если получено логическое значение False, то действие оператора while заканчивается и управление передаётся оператору, следующему за оператором while.

Замечания.

a.Выражение e в алгоритмах программ называют условием повторения цикла, а оператор s – телом цикла.

b.Оператор while организует выполнение одного оператора заранее неизвестное количество раз.

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

d.Если в теле цикла необходимо разместить не один, а несколько операторов, то необходимо использовать составной оператор.

e.Безусловное использование составного оператора в теле цикла является стилистической нормой.

f.Для избежания зацикливания (цикл бесконечно повторяется) те-

18

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

3.Оператор цикла repeat

Назначение: организация циклического вычислительного процесса

с постусловием.

Синтаксическая форма оператора: repeat

s1; s2 ;

sk ; until e

где repeat, until – зарезервированные слова; e – выражение логическо-

го типа; s1, s2, , sk – одиночные операторы.

Изображение оператора в схеме алгоритма:

 

s1

 

s2

 

 

sk

Нет

e

 

 

Да

Действие оператора:

1)последовательно выполняются операторы s1, s2, , sk;

2)вычисляется выражение e;

3)если получено логическое значение True, то действие оператора repeat заканчивается и управление передаётся оператору, следующему за оператором repeat;

4)если получено логическое значение False, то осуществляется

переход на пункт 1 (к выполнению операторов s1, s2, , sk).

Замечания.

a.Выражение e в алгоритмах программ называют условием завершения цикла, а операторы s1, s2, , sk – телом цикла.

b.Оператор repeat так же, как и while, организует выполнение тела цикла заранее неизвестное количество раз.

c.Поскольку выражение e вычисляется после выполнения

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