- •Методические указания к лабораторным работам для студентов очной и заочной форм обучения
- •Часть 1
- •Рязань 2008
- •Лабораторная работа № 1 Знакомство с системой программирования Turbo Pascal 7.0. Программирование линейных вычислительных процессов
- •1. Теоретическая часть
- •Начало работы в Turbo Pascal. Основные элементы системы программирования
- •1.2. Подготовка текста программы
- •1. 3. Сохранение текста программы
- •1. 4. Компиляция программы
- •1. 5. Пробный запуск программы на выполнение
- •1. 6. Завершение работы
- •1. 7 Программирование линейных вычислительных процессов
- •Практическая часть
- •Лабораторная работа № 2 Программирование разветвляющихся вычислительных процессов
- •1. Теоретическая часть
- •Практическая часть
- •Лабораторная работа № 3 Программирование циклических вычислительных процессов
- •1. Теоретическая часть
- •Практическая часть
- •Лабораторная работа № 4 Программирование с использованием массивов и строк
- •Теоретическая часть
- •1.1. Массивы
- •Практическая часть
Практическая часть
2.1. Ознакомиться с описанием лабораторной работы и по указанию преподавателя запустить систему программирования Turbo Pascal.
2.2. Изучить структуру окна системы программирования и основные операции в ней по пунктам 1.1 – 1.6 описания.
2.3. Для каждого из заданий составить блок-схему алгоритма решения и текст программы в рабочей тетради и предъявить их преподавателю. Для пояснения исходных данных, результатов и основных операций текст программы следует сопровождать комментариями.
2.4. По указанию преподавателя войти в режим редактирования, набрать текст программы и сохранить его в рабочем каталоге.
2.5. Выполнить компиляцию программы.
2.6. При выполнении п. 2.5 могут возникнуть ошибки. Сообщение компилятора об ошибке выдается в верхней части окна редактирования. При этом курсор устанавливается в ту позицию текста, где возможна ошибка. Если сразу после этого нажать <F1>, то на экране появляется дополнительная информация об ошибке. Нажатие любой другой клавиши стирает эту информацию. При возникновении ошибки необходимо исправить ошибку и повторить п. 2. 5.
2.7. Подобрать исходные данные и запустить программу на выполнение. Результаты зафиксировать в отчете в рабочей тетради. Если возникли ошибки на этапе выполнения, то необходимо попытаться изменить исходные данные и повторить пп. 2.5 - 2.7.
2.8. Аккуратно оформить отчет по лабораторной работе и предъявить его преподавателю. В отчете по каждому заданию должны быть отражены следующие пункты:
БСА алгоритма задачи.
Исходный текст программы с комментариями.
Результаты отладки по п.2.6.
Результаты решения по п. 2.7.
Задания к лабораторной работе.
1 . Вычислить выражение u=((x+y-z)3 – (x-y+z)2 + √|x+y+z|)/log2(tg(z)).
2. Вычислить выражение h=2z3+x2/√2+|y3|/√3 + (z4(ln(x)+1)√5)/√3.
3. На плоскости заданы точки A, B, C своими координатами в декартовой системе координат. Найти расстояние каждой точки до точки D(-124, -340).
4. Определить высоту h треугольника АВС, если его площадь равна s и основание больше высоты на величину a.
5. Найти решение квадратного уравнения ax2+bx+c=0 для a=3.45, b=5.6, c=-4.5.
6. Написать программу, которая для заданного целого числа а печатает на экране следующую таблицу:
a
a a2
а3 а4 a6
а6 а3 а2 a
Лабораторная работа № 2 Программирование разветвляющихся вычислительных процессов
1. Теоретическая часть
Вычислительный процесс называется разветвляющимся, если он содержит несколько направлений, отличающихся друг от друга содержанием выполняемых действий.
В языке Turbo Pascal для реализации разветвляющихся вычислительных процессов служат следующие операторы:
условный оператор if;
оператор выбора case;
оператор перехода goto.
Оператор if используется в программе, когда в зависимости от некоторого условия надо выбрать одно из двух действий, или когда какое-либо действие должно быть выполнено только при выполнении заданного условия.
В общем виде оператор if записывается так:
if <условие> then
begin
{операторы, выполняемые, если условие истинно}
end
else
begin
{операторы, выполняемые, если условие ложно}
end;
Выполняется оператор if следующим образом.
Сначала вычисляется значение выражения <условие>. Затем, если условие выполняется (то есть значение выражения <условие> равно true), то выполняются операторы, следующие за ключевым словом then, находящиеся между begin и end. Если условие не выполняется (значение выражения <условие> равно false), то выполняются операторы, следующие за словом else, находящиеся между begin и end.
Если при выполнении (или невыполнении) условия надо выполнить только один оператор, то ключевые слова begin и end после then (else) можно не писать.
Если какое-либо действие нужно выполнить только при выполнении некоторого условия и пропустить это действие в случае невыполнения условия, то оператор if может быть записан в другой форме:
if <условие>
then
begin
{операторы, выполняемые, если условие истинно}
end;
П р и м е р 1. Вычислить корни квадратного уравнения ax2+bx+c=0.
Блок-схема алгоритма решения задачи приведена на рис. 1.
Рис. 1
Текст программы:
Program Korni;
var
a, b, c: real; {коэффициенты уравнения}
d: real; {дискриминант}
x1, x2: real; {корни уравнения}
label 1,2;
begin
writeln(‘Введите коэффициенты a, b, c’);
readln(a, b, c);
d := b*b-4*a*c;
if d=0 then
begin x1:= -b/(2*a); x2:=x1; goto 1 end
else
if d>0 then
begin x1:= (-b-sqrt(d))/(2*a); x2:= (-b+sqrt(d))/(2*a) end
else begin writeln (‘Уравнение не имеет действительных корней’);
goto 2;
end;
1: writeln(‘x1=’,x1:6:2, ‘x2=’,x2:6:2);
2: end.
Оператор case позволяет реализовать множественный выбор и в общем виде записывается так:
case <выражение> of
<список констант 1> :begin
{последовательность операторов 1}
end;
<список констант 2> :begin
{последовательность операторов 2}
end;
<список констант N> :begin
{последовательность операторов N}
end;
else
begin
{последовательность операторов, выполняемая}
{в случае, если значение выражения не попало}
{ни в один из списков констант}
end;
end;
Здесь: <выражение>- выражение, от значения которого зависит дальнейший ход программы (то есть одна из последовательностей операторов, которая должна быть выполнена);
<список констант>- константы, разделенные запятыми. Если константы представляют диапазон чисел, то вместо списка можно указать первую и последнюю константу диапазона, разделив их двумя точками. Например, список 1,2,3,4,5,6 может быть заменен диапазоном 1..6.
Если между begin и end находится только одна оператор, то слова begin и end можно не писать.
Примеры:
1. case day of
1, 2, 3,4, 5: write ('Рабочий день. ');
6 : write (' Суббота ! ') ;
7 : write (' Воскресенье ! ') ;
end;
2. case day of
1..5 : write ( ' Рабочий день . ' );
6: write (' Суббота ! ') ;
7: write ('Воскресенье! ');
end;
Оператор case выполняется следующим образом. Сначала вычисляется значение выражения, стоящего после case, затем полученное значение последовательно сравнивается с константами из списков констант. Если значение выражения совпадает с константой из списка, то выполняется соответствующая этому списку последовательность операторов, и на этом выполнение оператора case завершается. Если значение выражения не совпадает ни с одной константой из всех списков, то выполняется последовательность операторов, следующая за else. Допускается не указывать else и соответствующую последовательность операторов. В этом случае, если значение выражения не совпадает ни с одной константой из всех списков, то выполняется следующий за саsе оператор программы.
П р и м е р 2. Составить программу, имитирующую работу микрокалькулятора.
Блок-схема алгоритма решения представлена на рис. 2.
Рис. 2
Текст программы:
Program Calculator;
Var
oper: char; {символ арифметической операции}
x, a, b :real; {x – результат, a, b – операнды}
stop :Boolean; {признак ошибочной операции}
begin
stop := false;
Write(‘Введите a и b’);
Readln(a, b);
Write(‘Введите символ операции ');
Readln(oper);
Case oper of {выбор арифметического действия}
‘+’: x:= a+b;
‘-‘: x:= a-b;
‘*”: x:= a*b;
‘/’: x:= a/b
else stop:=true
end;
if not stop then writeln(‘Результат = ‘, x:6:3)
end.