Программирование в среде Turbo Pascal 7.0. В 3 ч. Ч. 2. Программирование типовых алгоритмов
.pdf
Задание на лабораторную работу
Объявить в программе константы и переменные для одного из вариантов значений из табл. 1.1 и 1.2.
Таблица 1.1
Значения констант и переменных интервального и перечислимого типов
№ |
|
Типизированная |
Диапазон |
Константа |
значений |
||
вар. |
|
константа |
переменной |
|
|
|
|
1 |
Студент |
–1,1 |
–15...55 |
|
|
|
|
2 |
Группа |
2,2 |
12...53 |
|
|
|
|
3 |
ФГДЭ |
–3,33 |
–99...11 |
|
|
|
|
4 |
Сессия |
4,51 |
‘a’...’t’ |
5 |
Зачет |
–5,18 |
‘б’...’ф’ |
6 |
Экзамен |
6,37 |
66...87 |
7 |
Alpha |
–7,77 |
‘г’...’ю’ |
8 |
Beta |
8,39 |
13...27 |
9 |
Gamma |
121 |
47...89 |
10 |
13,5 |
–13 |
‘д’…’я’ |
|
|
|
|
11 |
–123 |
0,0032 |
–50…50 |
|
|
|
|
12 |
5,67 |
–16,17 |
98…106 |
|
|
|
|
13 |
1000 |
18,96 |
‘p’...’z’ |
14 |
–0,00456 |
19,9 |
–3...44 |
|
|
|
|
15 |
12,8 |
–65 |
–27...37 |
|
|
|
|
Возможные
значения
переменной Idn1, Idn2, Idn3
Elem1, elem2, elem3
Zima, Vesna,
Leto, Osen Kot, dog, mouse Sm1, sm2, sm3 Elm1, elm2, elm3 Zima, vesna, leto Slon, lev, kot Al1, bet2, gam3
Razn1, Razn 2, Razn3, Razn4
Vesna, Leto,
Zima, Osen
Obj1, Obj2,
Obj3, Obj4
Kol, Kol1, Kol 2
Str0, Str1, Str2,
Str3, Str4
Per1, Per2, Per3
10
Таблица 1.2
Значения переменных
№ |
I |
j |
k |
x |
y |
b1 |
ch |
s |
|
вар. |
|||||||||
|
66 |
|
|
|
|
|
|
||
1 |
–123 |
71426 |
0,0032 |
–6,28 |
TRUE |
Й |
Alpha |
||
2 |
–133 |
19 |
53678 |
–16,17 |
–999,77 |
FALSE |
Ц |
Beta |
|
3 |
30246 |
–3456 |
69147 |
18,96 |
1234,56 |
TRUE |
Н |
Gamma |
|
4 |
254 |
555 |
–6895 |
19,9 |
17,865 |
FALSE |
Г |
ГОРНЫЕ |
|
5 |
107 |
–127 |
127 |
–7,77 |
56,432 |
TRUE |
Ш |
Машины |
|
6 |
53678 |
71426 |
–127 |
8,39 |
0,0032 |
FALSE |
Щ |
Торф |
|
7 |
69147 |
254 |
555 |
0,326 |
–16,17 |
TRUE |
З |
Порода |
|
8 |
–6895 |
30246 |
–3456 |
–11,22 |
18,96 |
FALSE |
Д |
Минерал |
|
9 |
71426 |
254 |
19 |
638,927 |
19,9 |
TRUE |
Ж |
Допуск |
|
10 |
127 |
107 |
254 |
3,14 |
–7,77 |
FALSE |
Э |
Студент |
|
11 |
–127 |
53678 |
107 |
–6,28 |
8,39 |
TRUE |
Л |
Группа |
|
12 |
555 |
–133 |
53678 |
–999,77 |
0,326 |
FALSE |
Ы |
ФГДЭ |
|
13 |
–3456 |
254 |
–123 |
1234,56 |
–11,22 |
TRUE |
Ф |
Сессия |
|
14 |
19 |
–6895 |
–133 |
17,865 |
638,927 |
FALSE |
Я |
Зачет |
|
15 |
66 |
–123 |
30246 |
56,432 |
3,14 |
TRUE |
Ч |
Экзамен |
Присвоить им значения по варианту задания.
Используя взаимное переприсваивание, исследовать совместимость переменных разных типов. Если типы не совместимы, заключить эту строку программы в фигурные скобки (закомментировать), добавив напротив оператора присваивания примечание – несовместимы:
{ p:= x; несовместимы}.
Содержание отчета
1.Цель работы.
2.Вариант задания на лабораторную работу.
3.Распечатка текста программы.
4.Выводы (о совместимости типов).
11
Лабораторная работа № 2
ВВОД-ВЫВОД ДАННЫХ
Цель работы: практически освоить процедуры ввода-вывода данных.
Вводная информация
Обмен данными с внешними файлами
ипериферийными устройствами
Вобмене данными в Паскале участвуют источник, канал переда-
чи и приемник. При вводе данных источником является файл, а приемником – ОЗУ. При выводе, наоборот, данные из ОЗУ пересылаются в файл. Под файлом понимается внешний (создаваемый вне программы) файл данных на каком-либо носителе или аппаратное устройство, имеющее в Турбо-системе статус файла (клавиатура, дисплей, принтер, параллельные и последовательные порты, фиктивное устройство).
Одним из типов внешних файлов является текстовый файл, в котором информация хранится в виде последовательностей обычных символов подобно тому, как они записываются на бумаге. Символы в текстовом файле разделяются на строки различной длины, которые заканчиваются специальным символом признака конца строки.
Содержимое таких файлов можно просматривать в окне редактора Турбо-системы Edit как обычный текст, поэтому текстовые файлы удобно использовать для вывода в них результатов работы Паскаль-программы.
Формат описания текстового файла в разделе описаний программы:
Var имя_файла: text;
Пример описания текстового файла:
Var
fp: text; {здесь fp – файловая переменная (логическое имя файла)}
12
В программном блоке необходимо выполнить процедуру связывания логического имени файла с физическим файлом на диске:
BEGIN
Assign (fp, ‘E:\ 102812\ Rez1. pas’); {связывание файла с логиче-
ским именем fp с физическим файлом на диске с полным именем ‘E:\102812\ Rez.pas}
…………………………………………
…………………………………………
END.
После выполнения процедуры Assign все операции, предписанные в Паскаль-программе файлу с логическим именем fp, будут выполняться над физическим файлом Rez.pas.
Типовые операции над текстовым файлом с логическим именем fp: Reset (fp) – открытие текстового файла с логическим именем fp (физического файла Rez1.pas) для чтения из него данных, начиная
с начала первой строки.
Read (fp, y1, y2, …, yn) чтение данных из открытого файла fp, прочитанные значения последовательно присваиваются переменным y1, y2, …, yn списка ввода без перехода в начало следующей строки.
Readln (fp, список_ввода) – то же, что и в предыдущем случае, но после чтение данных выполняется переход на новую строку (следующая процедура ввода будет вводить данные из новой строки).
Readln (fp); переход в начало новой строки в файле без чтения данных.
Rewrite (fp); – открытие файла fp для перезаписи в него с начала первой стоки, предыдущие данные стираются.
Append (fp); открытие ранее созданного текстового файла fp для дозаписи данных в конец файла, предыдущие данные сохраняются.
Write (fp, x1, x2, … xn); запись в текстовый файл fp значений переменных x1, x2, … xn списка вывода без перехода в начало следующей строки.
Writeln (fp, список_вывода); то же, что и в предыдущем случае, но с завершением записи в текущую строку и переходом в начало новой строки.
13
Writeln (fp); – переход в начало новой строки без записи данных (создание «пустой» строки в текстовом файле.
Close (fp); – закрытие файла).
Ввод данных с клавиатуры
Если в процедурах Read или Readln зывается логическое имя файла, то в Турбо-системе, файлом-источником можны три варианта записи:
перед списком ввода не укапо умолчанию, принятому является клавиатура. Воз-
Read (список_переменных); каждое вводимое с клавиатуры значение последовательно присваивается переменным, имена которых перечислены в списке ввода.
Readln (список_переменных); то же, но после ввода выполняется переход на новую строку на дисплее.
Readln; переход на новую строку без ввода данных. Примечание. При выполнении процедур Read или Readln Турбо-
система переходит в режим ожидания ввода данных (окно с черным цветом фона) и остается в нем до момента ввода последнего значения. Поэтому перед использованием этих процедур следует выводить на дисплей текстовую подсказку пользователю – в какой последовательности вводить значения переменных:
Write (‘Введите x, y, z’); {Вывод на дисплей строки «Введите x, y, z»}
Readln (x, y, z); {Присваивание вводимых значений переменным x, y, z}
В качестве разделителя вводимых значений используются:
при вводе значений в одной строке – один или несколько пробелов;
при вводе значений по-отдельности – признак конца строки (нажатие клавиши Enter).
Вывод данных на дисплей и в текстовый файл
Для вывода данных на дисплей используются процедуры Write или Writeln без указания логического имени файла перед списком вывода. Элементами списка вывода могут быть либо имена констант, переменных или результат математического выражения, либо
14
символьные последовательности, заключенные в апострофы, либо их комбинация. В качестве разделителя элементов списка вывода используется символ «запятая»:
Writeln (‘Исходные данные:’); {Элемент списка – текст в апострофах}
Writeln (‘x =’, x, ‘y =’, y, ‘z =’, z); {Элементы списка – текст и имена переменных}
Последовательности символов, заключенные в апострофы, выводятся без изменений. Вместо имен переменных выводятся соответствующие текущие значения этих переменных.
При использовании в списке вывода имен переменных без указания формата значения переменных выводятся с плавающей десятичной точкой. Количество позиций для вывода значений переменных устанавливается Турбо-системой по умолчанию.
Для форматного вывода значений переменных используются форматы:
–P:M, где P – имя переменной; M – целое число, задающее количество позиций для вывода значения P;
–P:M:N, где P – имя переменной; M – общее число позиций для вывода значения P, включая знак числа, десятичную точку и дробную часть;
–N – целое число, задающее количество позиций для вывода дробной части.
Пример форматного вывода на дисплей:
Writeln (‘ x =’, x:5:2, ‘ y =’, y:7:3, ‘ z =’, z:7);
Обычно формат P:M используется для вывода целых чисел, при этом избыточные позиции заменяются символами пробела перед числом. При использовании этого формата для вывода вещественных чисел по умолчанию реализуется представление числа с плавающей десятичной точкой.
При выводе вещественных чисел по формату P:M:N избыточные позиции в целой части заменяются символами пробела перед числом, а избыточные позиции в дробной части заполняются нулями в конце дробной части.
15
При выполнении процедуры Writeln; выполняется переход в начало новой строки (разделение выводимых на дисплей строк «пустой» строкой).
Пример вывода данных в текстовый файл (перед списком вывода следует указать логическое имя файла):
Writeln (fp, ‘x =’, x:5:2, ‘y =’, y:7:3, ‘z =’, z:7);.
Процедура Writeln(fp); пропускает строку в текстовом файле. Для пропуска нескольких строк следует повторить эту процедуру несколько раз.
Задание на лабораторную работу
Составить программу, которая обеспечивает:
–ввод с клавиатуры значений переменных для указанного преподавателем варианта из табл. 1.1 и 1.2 задания на лабораторную работу № 1;
–вывод значений этих переменных на дисплей и в текстовый файл с указанием имен переменных.
Определить, данные каких типов нельзя ввести с клавиатуры. Определить, данные каких типов нельзя вывести на дисплей.
Содержание отчета
1.Цель работы
2.Задание на лабораторную работу
3.Распечатка текста программы
4.Выводы
В выводах необходимо указать типы данных, которые нельзя вводить с клавиатуры и выводить на дисплей.
16
Лабораторная работа № 3
ПРОГРАММИРОВАНИЕ ЛИНЕЙНЫХ АЛГОРИТМОВ
Цель работы: получить навыки программирования линейных алгоритмов с использованием математических выражений.
Вводная информация
Понятие линейного алгоритма
Алгоритм – это понятное и точное предписание исполнителю (человеку или вычислительной машине) последовательности действий (команд), направленных на решение поставленной задачи.
Алгоритм называется линейным, если его команды выполняются в порядке их естественного следования друг за другом независимо от каких-либо условий.
Математические выражения
Вязыке Турбо Паскаль могут быть реализованы два вида математических выражений арифметические или логические. Результат арифметического выражения число, результат логического выражения TRUE (истинно) или FALSE (ложно).
Валгоритмической записи математические выражения состоят из операндов (констант, переменных и обращений к функциям)
изнаков арифметических или логических операций. Большинство операций в языке Турбо Паскаль являются бинарными и содержат как минимум два операнда:
x +y/z {x, y и z операнды, + и / знаки арифметических операций}
a or b. {a и b операнды, or знак логической операции «Или»}
Некоторые операции являются унитарными и содержат только один операнд, знак операции в них всегда предшествует операнду:
–y {присваивание отрицательного значения переменной y} not (a) {логическая операция not над значением переменной a}
17
При вычислениях сначала выполняются операции наивысшего
приоритета, затем более низкого.
Приоритет операций в математических выражениях:
1)not (и другие унитарные операции);
2)вычисление значений стандартных функций;
3)*, /, div, mod, and;
4)+, –, or, xor;
5)операции отношения (<, >, =, <>, <=, >=).
Операции равного приоритета выполняются последовательно слева направо. Для изменения порядка вычислений используются круглые скобки.
Пример вычисления арифметического выражения. Составить программу для вычисления выражения
ex a
y 3 1 1 1x tg(a x)
при a = 3,45 и x = 0,514.
Program pr1;
Const a = 3.45;
Var x: real;
BEGIN
Write (‘Введите значение x > 0‘); Readln (x);
Y:= exp(1/3 * ln(exp(x + a)/(1 – 1/(1 + x)))) + sin(a + x)/cos(a + x); Writeln (‘При a =’, a, ‘x =’, x:5:3, ‘ y =, y:7:3)
END.
Пример вычисления логического выражения. Составить програм-
му для определения результата логического выражения:
b = (a > 3) and (c <= 5) or not (a – c > x) при a = 1,2; x = 3,3; c = 0,5.
Program pr2;
Var
a, x, c: real; b: boolean;
18
BEGIN
a:= 1.2; x:= 3.3; c:= 0.5;
b:= (a > 3) and (c <= 5) or not (a – c > x);
Writeln (‘При a =’, a, ‘c =, c ‘,x =’, x, ‘результат b =’, b)
END.
Пояснения. При заданных значениях переменных логическое выражение
(1.2 > 3.3) and (0.5 <= 5) or not (1.2 – 0.5 < 0).
Результаты операций отношения в скобках:
(FALSE) and (TRUE) or not (FALSE).
В соответствии с приоритетами последовательность выполнения логических операций будет not – and – or. Тогда: not (FALSE) =
=TRUE, FALSE and TRUE = FALSE, FALSE or TRUE = TRUE
ирезультат вычисления логического выражения будет равен TRUE.
Задания на лабораторную работу
Ознакомиться с вводной информацией и выполнить вариант задания, указанный преподавателем.
Задание А.
Разработать алгоритм и составить программу вычисления арифметического выражения по варианту задания из табл. 3.1. Исходные данные вводятся с клавиатуры по запросу программы. На дисплей и в текстовый файл c указанием имен переменных выводятся значения исходных данных и результат вычислений.
19
