Линейные программы
..pdfУТВЕРЖДАЮ
Заведующий кафедрой КИПР
______________В.Н. ТАТАРИНОВ
“___” ___________2012 г.
Лабораторная работа по дисциплинам «Информатика» для студентов специальности 211000.62 (бакалавриат) и «Информатика и информационные технологии» специальности 162107.65 (специалитет)
Разработчик: Доцент кафедры КИПР
____________Ю.П. Кобрин
Томск 2012
|
|
|
2 |
|
|
|
|
СОДЕРЖАНИЕ |
|
1 |
ЦЕЛИ РАБОТЫ |
................................................................................................................. |
4 |
|
2 |
ПОРЯДОК ВЫПОЛНЕНИЯ .................................................................................РАБОТЫ |
4 |
||
3 |
КОНТРОЛЬНЫЕ ..............................................................................................ВОПРОСЫ |
4 |
||
4 |
ЗАЩИТА ОТЧЕТА............................................................................................................. |
5 |
||
5 ТИПЫ ДАННЫХ ....................................................................В ЯЗЫКЕ BORLAND PASCAL |
5 |
|||
|
5.1 |
Общие понятия ....................................................................................... |
5 |
|
|
5.2 |
Данные .................................................................................................... |
|
6 |
|
5.3 |
Простые .............................................................................типы данных |
7 |
|
|
|
5.3.1 ......................................................................... |
Целочисленные типы чисел |
7 |
|
|
5.3.2 ...................................................................................... |
Перечисляемый тип |
8 |
|
|
5.3.3 ....................................................................Тип-диапазон (интервальный) |
8 |
|
|
|
5.3.4 ............................................ |
Вещественные ( действительные ) типы чисел |
8 |
|
|
5.3.5 ............................................................................................ |
Символьный тип |
9 |
|
|
5.3.6 ............................................................................................ |
Логический тип |
11 |
|
5.4 |
Формулы ........................................................................Бэкуса–Наура |
12 |
|
|
5.5 |
Константы.............................................................................................. |
12 |
|
|
5.6 |
Переменные.......................................................................................... |
14 |
|
|
5.7 |
Типизированные .................................................................константы |
16 |
|
|
5.8 |
Выражения............................................................................................ |
16 |
|
|
|
5.8.1 ........................................... |
Последовательность выполнения операций |
16 |
|
|
5.8.2 ......................................................... |
Результаты вычисления выражений |
18 |
|
|
5.8.3 .............................................................. |
Некоторые встроенные функции |
19 |
6 |
ЛИНЕЙНЫЕ ПРОГРАММЫ............................................................................................. |
20 |
||
|
6.1 |
Общие понятия ..................................................................................... |
20 |
|
|
6.2 |
Операторы............................................................................................. |
21 |
|
|
6.3 |
Оператор .......................................................................присваивания |
22 |
|
|
6.4 |
Использование ..............................................................подпрограмм |
23 |
|
|
6.5 |
Операторы ...........................................................ввода с клавиатуры |
24 |
|
|
|
6.5.1 ............................................................... |
Ввод данных символьного типа |
25 |
|
|
6.5.2 .........................................Ввод данных целого или вещественного типа |
25 |
|
|
6.6 |
Операторы .................................................вывода на экран дисплея |
25 |
|
7 МЕТОДИКА РАЗРАБОТКИ .....................................................ЛИНЕЙНЫХ ПРОГРАММ |
28 |
|||
|
7.1 |
Пример ..........................................................разработки программы |
28 |
|
|
7.2 |
Ввод программы................................................................................... |
30 |
|
|
3 |
|
|
7.3 |
Сохранение программы ....................................................................... |
30 |
|
7.4 |
Компиляция программы ...................................................................... |
30 |
|
7.5 |
Выполнение программы ...................................................................... |
30 |
|
7.6 |
Просмотр результатов.......................................................................... |
31 |
|
7.7 |
Повторное обращение к программе ................................................... |
31 |
8 |
ИНДИВИДУАЛЬНЫЕ ЗАДАНИЯ..................................................................................... |
32 |
|
|
8.1 |
Рекомендации по составлению программы ....................................... |
32 |
|
8.2 |
Варианты заданий для составления линейных программ ................. |
32 |
9 |
СПИСОК ЛИТЕРАТУРЫ .................................................................................................. |
36 |
4
1Цели работы
Изучение способов представления арифметических данных
Знакомство с правилами записи арифметических выражений с использованием встроенных арифметических функций
Изучение работы операторов вызова стандартных процедур, операторов присваивания, операторов ввода и операторов вывода.
Освоение приемов программирования и отладки простейших линейных алго-
ритмов.
Закрепление навыков работы в интегрированной среде Borland Pascal.
2Порядок выполнения работы
1)Ознакомиться с разделами «Представление и преобразование информации в программах на языке Pascal», «Методика разработки линейных программ» а также, при необходимости, а также с дополнительной литературой [1] [2] [3] [4] [5] [6].
2)Ответить письменно на контрольные вопросы.
3)Получить у преподавателя индивидуальное задание. Разработать программу в соответствии с индивидуальным заданием.
1)Войти в свой личный каталог и загрузить и настроить систему Borland Pascal 7.0.
2)Ввести шаблон программы, сделанный на прошлом занятии. Сделать его копию, записав под новым именем (линейной программы) с помощью команды
Save as ...
4)Ввести разработанную Вами программу, корректируя и дополняя свой шаблон.
5)Добиться с помощью отладки, чтобы программа давала правильные результа-
ты
6)Оформить отчет и защитить его у преподавателя.
3 Контрольные вопросы
Ответьте на следующие контрольные вопросы:
1)Перечислите стандартные типы языка Borland Pascal.
2)Как записываются операторы заголовка и конца программы? Является ли обязательным заголовок программы в языке Borland Pascal?
1)Каковы диапазоны допустимых значений для целых и вещественных типов
данных?
2)В каком порядке выполняются операции в выражениях?
3)Как работает оператор присваивания?
4)Как ввести в программу данные с клавиатуры?
5)Как записываются операторы вывода на экран в языке Паскаль?
6)В чем преимущества использования подпрограмм?
5
4 Защита отчета
Отчет должен быть выполнен в соответствии с [9] и состоять из следующих разде-
лов:
Тема и цель работы.
Индивидуальное задание.
Ответы на контрольные вопросы.
Текст программы и вводимые тестовые исходные данные.
Результаты выполнения программы.
Выводы.
При защите отчета по работе для получения зачета студент должен:
уметь отвечать на контрольные вопросы;
обосновать структуру выбранного алгоритма и показать его работоспособность;
уметь пояснять работу программы;
продемонстрировать навыки работы в среде Borland Pascal.
5Типы данных в языке Borland Pascal
5.1Общие понятия
Решение любой задачи достигается обработкой информации или данных. Поэтому, как программисту, Вам необходимо знать, как:
осуществить ввод данных - т.е. ввести информацию (данные) в программу с клавиатуры, диска или из порта ввода/вывода;
сохранить данные (информацию) во внутренней (оперативной) или внешней (экран, магнитные и оптические диски и другие устройства ввода-вывода) памяти. Это достигается использованием констант, переменных и структур, содержащих числа (целые и вещественные), текст (символы и строки) или указатели - адреса переменных и структур;
правильно задать команды обработки данных (операторы, инструкции). С
их помощью осуществляют присваивание значений, вычисление выражений, сравнение значений (равно, не равно, больше и т.д.);
получить данные из программы (вывод данных) на экран, на диск или в порт ввода/вывода.
Вы можете написать и упорядочить свои команды так, чтобы:
некоторые из них выполнялись при выполнении некоторого условия или ряда условий (условное выполнение);
другие выполнялись определенное число раз (циклы), пока истинно некоторое условие, или пока условие не станет истинным;
другие собирались в отдельные части, объединенные именем (подпрограммы), которые могут быть выполнены в нескольких местах программы, где есть вызов их по имени.
6
5.2Данные
Язык Паскаль является строго-типизированным языком программирования. Это означает, что для всех переменных в программе должен быть определен их тип данных.
Понятие типа данных является ключевым в языке Паскаль.
Типы данных характеризуют:
-способ их внутреннего (машинного) представления (кодирования),
-множество допустимых значений, которые они могут принимать,
-набором операций, которые могут быть выполнены с ними.
Программа на языке Borland Pascal оперирует всевозможными данными - числами, символами, строками символов, массивами и т.д.
Данные - это конкретные значения, которые обрабатываются во время выполнения программы.
Обязательное описание типа приводит к избыточности в тексте программ, но такая избыточность является важным вспомогательным средством разработки программ и рассматривается как необходимое свойство современных алгоритмических языков высокого уровня. Поэтому любые данные должны быть явно отнесены к определенным ти-
пам.
Кроме стандартных типов данных (определенных в самом языке), в Borland Pascal. предусмотрен механизм создания новых (пользовательских) типов данных, заданных самим программистом. Благодаря этому общее количество типов, используемых в программе, может быть сколь угодно большим.
Borland Pascal характеризуется разветвленной структурой типов данных (рис. 5.1).
Рисунок 5.1 - Типы данных в языке Borland Pascal
7
Рассмотрим основные стандартные типы данных, используемые в программировании. Но предварительно ознакомимся с одним из допустимых способов описания конструкций языков программирования.
5.3Простые типы данных
Кпростым типам (скалярным типам) данных относят типы данных таких величин, значения которых не содержит составных частей.
К простым типам (см. рис. 5.1) относятся порядковые и вещественные типы. Порядковые типы отличаются тем, что каждый из них имеет конечное число воз-
можных значений. Эти значения можно определенным образом упорядочить (отсюда - название типов) и, следовательно, с каждым из них можно сопоставить некоторое целое число - порядковый номер значения.
Как видно из рис. 5.1 , к порядковым типам относятся: це-
лые, логический, символьный, перечисляемый и тип-диапазон. К
любому из них применима функция Ord(X), которая возвращает порядковый номер значения выражения X.
Вещественные типы (с дробной частью), строго говоря, тоже имеют конечное число значений, которое определяется форматом внутреннего представления вещественного числа. Однако количество возможных значений вещественных типов настолько велико, что сопоставить с каждым из них целое число (его номер) не представляется возможным.
5.3.1Целочисленные типы чисел
ВBorland Pascal каждый целочисленный тип обозначает определенное подмножество целых чисел (чисел без дробной части). Диапазон возможных значений целых типов зависит от их внутреннего представления, которое может занимать один, два или четыре байта, как это показано в следующей таблице.
Таблица 5.1 - Стандартные целочисленные типы данных
|
Тип |
|
|
Название |
|
|
Диапазон |
|
|
|
Формат |
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
Shortint |
|
короткое целое |
-128 |
.. 127 |
|
8 |
бит со знаком |
||||||
|
|
|
|
|
|
|
|
||||||
Integer |
|
целое |
-32768 |
.. 32767 |
|
|
16 бит со знаком |
||||||
|
|
|
|
|
|
|
|||||||
Longint |
|
длинное целое |
-2147483648 .. 2147483647 |
|
32 |
бита со знаком |
|||||||
|
|
|
|
|
|
|
|||||||
Byte |
|
длиной в байт |
0 .. 255 |
|
8 |
бит без знака |
|||||||
|
|
|
|
|
|
|
|||||||
Word |
|
длиной в слово |
0 .. 65535 |
|
|
16 бит без знака |
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8
5.3.2 Перечисляемый тип
Перечисляемый тип задается перечислением тех значений, которые он может получать. Это тип, определяемый пользователем. Каждое значение именуется некоторым идентификатором и располагается в списке, обрамленном круглыми скобками, например:
type
tColors = (red, green, blue);
tMonth = (jan, feb, mar, may, jun, jul, aug, sep, oct, nov, dec);
Соответствие между значениями перечисляемого типа и порядковыми номерами этих значений устанавливается порядком перечисления: первое значение в списке получает порядковый номер 0, второе - 1 и т.д. Максимальная мощность перечисляемого типа составляет 65536 значений.
Применение перечисляемых типов делает программы нагляднее.
5.3.3 Тип-диапазон (интервальный)
Тип-диапазон есть подмножество своего базового типа, в качестве которого может выступать любой порядковый тип, кроме типа-диапазона. Тип-диапазон задается границами своих значений внутри базового типа:
<мин.знач.> .. <макс.знач.>
Здесь <мин.знач.> - минимальное значение типа-диапазона, <макс.знач.> - максимальное его значение. Например:
type
digit = '0' .. '9'; MonthDay = 1 .. 31;
Чаще всего тип-диапазон употребляется для указания допустимых границ изменения индексов у элементов массивов.
5.3.4Вещественные (действительные) типы чисел
Квещественному типу относится подмножество вещественных чисел, которые могут быть представлены
вмашинном формате с плавающей точкой с фиксированным числом цифр. Вещественные типы в Borland Pascal различаются диапазоном и точностью связанных с ними значений (см. Табл. 5.2).
9
Таблица 5.2 - Диапазоны представления и точность представления (числа значащих десятичных цифр) для вещественных типов данных
|
|
|
|
|
|
|
|
|
|
|
Число |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Размер в |
|
|
|
|
Тип |
|
|
Название |
|
|
Диапазон |
|
|
значащих |
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
байтах |
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
цифр |
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
|
с повышенной |
1.9·10-4951 .. 1.1·104932 |
|
|
от 19 до 20 |
|
10 |
|
||||
|
|
|
|
|
точностью |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
Comp |
|
сложный тип1 |
-263 + 1 .. 263 - 1 |
|
|
от 19 до 20 |
|
8 |
|
Вещественные типы являются упорядоченными, но не порядковыми.
Внутреннее машинное представление различных типов вещественных чисел.
В любом представлении старший бит Зн определяет знак вещественного числа:
0- положительное число;
1- отрицательное число.
Так как при любом варианте кодирования число битов в мантиссе ограничено, вещественные числа хранятся неточно. Каждый из имеющихся вещественных типов гарантирует правильное хранение только определенного количества значащих (верных) цифр.
Неточности в хранении вещественных чисел могут привести к тому, что при вычитании близких чисел может произойти потеря значимости. Это же объясняет, почему следует избегать сравнения вещественных величин на точное равенство.
5.3.5 Символьный тип
Значением символьного типа (char) является множество всех символов персонального компьютера, упорядоченных в соответствии с расширенным набором символов кода
ASCII (American Standard Code for Information Interchange - американский стандартный код для обмена информацией).
1 Сложный тип содержит только целочисленные значения в диапазоне -263+1 … 263-1, что приблизительно соответствует диапазону -9.2·1018 … 9.2·1018 в десятичной системе счисления.
10
При таком подходе любой символ кодируется одним байтом, а это всего 256 возможных значений. Естественно, все возможные символы в этот диапазон не уложить. Поэтому разработчики кодовой таблицы выбирают, какие алфавиты охватить. Первая половина таблицы символов ПК с кодами 0...127 соответствует стандарту ASCII (табл. 5.3) и может использоваться в программах Borland Pascal. Вторая половина символов с кодами 128...255 предназначена для представления символов национальных алфавитов и применяется лишь в комментариях к программе и в качестве значений текстовых строк.
Таблица 5.3 - Кодировка символов в соответствии со стандартом ASCII
|
Код |
|
|
Символ |
|
|
Код |
|
|
Символ |
|
|
Код |
|
|
Символ |
|
|
Код |
|
|
Символ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
0 |
|
|
NUL |
|
|
32 |
|
|
BL |
|
|
64 |
|
® |
|
|
96 |
|
' |
|
||
|
1 |
|
|
ЗОН |
|
|
33 |
|
! |
|
|
65 |
|
|
A |
|
97 |
|
|
a |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
2 |
|
|
STX |
|
|
34 |
|
" |
|
|
66 |
|
|
В |
|
98 |
|
|
b |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
3 |
|
|
ЕТХ |
|
|
35 |
|
# |
|
|
67 |
|
|
С |
|
99 |
|
|
с |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
4 |
|
|
EOT |
|
|
36 |
|
$ |
|
|
68 |
|
|
D |
|
100 |
|
|
d |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
5 |
|
|
ENQ |
|
|
37 |
|
% |
|
|
69 |
|
|
E |
|
101 |
|
|
e |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
6 |
|
|
АСК |
|
|
38 |
|
& |
|
|
70 |
|
|
F |
|
102 |
|
|
f |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
7 |
|
|
BEL |
|
|
39 |
|
' |
|
|
71 |
|
|
G |
|
103 |
|
|
g |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
8 |
|
|
BS |
|
|
40 |
|
( |
|
|
72 |
|
|
H |
|
104 |
|
|
h |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
9 |
|
|
НТ |
|
|
41 |
|
) |
|
|
73 |
|
|
I |
|
105 |
|
|
i |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
10 |
|
|
LF |
|
|
42 |
|
* |
|
|
74 |
|
|
J |
|
106 |
|
|
j |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
11 |
|
|
VT |
|
|
43 |
|
+ |
|
|
75 |
|
|
k |
|
107 |
|
|
k |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
12 |
|
|
FF |
|
|
44 |
|
, |
|
|
76 |
|
|
L |
|
108 |
|
|
i |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
13 |
|
|
CR |
|
|
45 |
|
- |
|
|
77 |
|
|
M |
|
109 |
|
|
m |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
14 |
|
|
SO |
|
|
46 |
|
. |
|
|
78 |
|
|
N |
|
110 |
|
|
n |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
15 |
|
|
SI |
|
|
47 |
|
/ |
|
|
79 |
|
|
О |
|
111 |
|
0 |
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
16 |
|
|
DEL |
|
|
48 |
|
0 |
|
|
80 |
|
|
p |
|
112 |
|
|
P |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
17 |
|
|
DC1 |
|
|
49 |
|
1 |
|
|
81 |
|
|
Q |
|
113 |
|
|
q |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
18 |
|
|
DC2 |
|
|
50 |
|
2 |
|
|
82 |
|
|
R |
|
114 |
|
|
r |
|||
|
19 |
|
|
DC3 |
|
|
51 |
|
3 |
|
|
83 |
|
|
S |
|
115 |
|
|
s |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
20 |
|
|
DC4 |
|
|
52 |
|
4 |
|
|
84 |
|
|
T |
|
116 |
|
|
t |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
21 |
|
|
NAK |
|
|
53 |
|
5 |
|
|
85 |
|
|
U |
|
117 |
|
|
u |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
22 |
|
|
SYN |
|
|
54 |
|
6 |
|
|
86 |
|
|
V |
|
118 |
|
|
V |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
23 |
|
|
ETB |
|
|
55 |
|
7 |
|
|
87 |
|
|
w |
|
119 |
|
|
w |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
24 |
|
|
CAN |
|
|
56 |
|
8 |
|
|
88 |
|
|
X |
|
120 |
|
|
X |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
25 |
|
|
EM |
|
|
57 |
|
9 |
|
|
89 |
|
|
У |
|
121 |
|
|
У |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
26 |
|
|
SUB |
|
|
58 |
|
: |
|
|
90 |
|
|
z |
|
122 |
|
|
z |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
27 |
|
|
ESC |
|
|
59 |
|
/ |
|
|
91 |
|
[ |
|
|
123 |
|
{ |
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
28 |
|
|
FS |
|
|
60 |
|
< |
|
|
92 |
|
\ |
|
|
124 |
|
|
l |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
29 |
|
|
GS |
|
|
61 |
|
= |
|
|
93 |
|
] |
|
|
125 |
|
} |
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
30 |
|
|
RS |
|
|
62 |
|
> |
|
|
94 |
|
^ |
|
|
126 |
|
~ |
|
|||
|
31 |
|
|
US |
|
|
63 |
|
? |
|
|
95 |
|
|
— |
|
127 |
|
|
n |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|