- •Методические указания к лабораторным работам для студентов очной и заочной форм обучения
- •Часть 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. Для каждого из заданий составить блок-схему алгоритма решения и текст программы в рабочей тетради и предъявить их преподавателю. Для пояснения исходных данных, результатов и основных операций текст программы сопровождать комментариями.
2.3. Набрать текст программы, сохранить его в рабочем каталоге и выполнить компиляцию программы.
2.4. Подобрать контрольный набор исходных данных и запустить программу на выполнение. Результаты зафиксировать в рабочей тетради. Если возникли ошибки на этапе выполнения, то следует провести отладку программы, изменить исходные данные, и повторить пп. 2.3, 2.4.
2.5. Проверить работу программы, задавая 3 – 4 набора исходных данных. Результаты зафиксировать в рабочей тетради.
2.6. По данным рабочей тетради аккуратно оформить отчет по лабораторной работе и предъявить преподавателю. В отчете по каждому заданию должны быть отражены следующие пункты:
БСА алгоритма.
Исходный текст программы с комментариями.
Результаты отладки по п.2.4.
Результаты решения по п. 2.5.
Задания к лабораторной работе
1. Составить программу вычисления значений функции:
1 - e-ax*sin(ax+b) при x>π;
Y = 1 - e-ax*(ax+b) при -π<x≤π
1 – (e-ax + eax )*sin(ax) при x≤-π
2. Даны три неравных числа a, b, c. Составить программу нахождения квадрата большего из этих чисел.
3. Треугольник задан координатами своих вершин x, y на плоскости. Определить, является ли заданный треугольник равнобедренным.
4. Составить программу, в которой по заданному значению аргумента x определяется значение функции y, заданной в виде графика (рис. 3).
Рис. 3
5. Составить программу, которая запрашивает у пользователя номер месяца и выводит соответствующее название времени года. Если пользователь укажет недопустимое число, программа должна вывести сообщение «Ошибка ввода данных».
6. Составить программу, которая после введенного с клавиатуры числа в диапазоне от 1 до 999, обозначающего денежную единицу, дописывает слово “рубль” в правильной форме. Например, 12 рублей, 21 рубль, 3 рубля и т. д.
Лабораторная работа № 3 Программирование циклических вычислительных процессов
1. Теоретическая часть
Вычислительный процесс называется циклическим, если он состоит из многократного выполнения одних и тех же действий при различных значениях промежуточных данных. Такие повторяющиеся действия называются циклами и реализуются в программах с использованием операторов цикла.
В языке Turbo Pascal существуют три оператора цикла: for, while и repeat.
Оператор for используется, если некоторую последовательность действий надо выполнить несколько раз, причем число повторений заранее известно. Например, вычислить значения функции в нескольких различных, отстоящих на равное расстояние друг от друга точках (то есть построить таблицу значений функции).
В общем виде оператор for записывается так:
for параметр_цикла:=нач_значение to кон_значение do
begin
{последовательность операторов тела цикла}
end;
где
параметр_цикла — имя переменной-счетчика числа повторений операторов цикла;
нач_значение — выражение, определяющее начальное значение параметра цикла;
кон_значение — выражение, определяющее конечное значение параметра цикла.
Если между begin и end находится только одна оператор, то слова begin и end можно не писать. Обычно в качестве выражений, определяющих начальное и конечное значения параметра цикла, используются переменные или константы. В этом случае последовательность операторов тела цикла будет выполнена (кон_значение - нач_значение + 1) раз. В теле цикла допускается использовать значение параметра цикла.
П р и м е р 1. Вычислить сумму первых n элементов ряда 1+1/2+1/3+…+1/i…+1/n.
Блок-схема алгоритма решения представлена на рис. 1.
Рис. 1
Текст программы:
program summa;
var
i, n:integer; {номер элемента ряда и число элементов}
elem:real; {значение элемента ряда}
sum:real; {сумма элементов ряда}
begin
writeln(‘Введите число элементов ряда’);
readln(n);
sum:=0;
for i:=l to n do
begin
elem:=l/i;
sum: =sum+elem; {подсчет суммы элементов}
writeln(i:2, ' ',elem: 4:2); {вывод значения текущего элемента ряда}
end;
writeln('Сумма элементов ряда: ',sum: 4:2);
end.
Если в операторе for вместо слова to записать downto, то после очередного цикла значение переменной цикла будет не увеличиваться, а уменьшаться. Например, оператор
for j:=10 downto 0 do
writeln(j);
выводит на экран числа от 10 до 0.
Оператор while используется в том случае, если некоторую последовательность действий (операторов программы) надо выполнить несколько раз, причем необходимое число повторений во время разработки программы неизвестно и может быть определено только во время ее работы, т. е. определяется ходом вычисления.
Типичными примерами использования цикла while являются вычисления с заданной точностью, поиск в массиве или в файле.
В общем виде оператор while записывается так:
while <условие> do
begin
{последовательность операторов тела цикла}
end;
где <условие> — выражение логического типа, определяющее условие выполнения тела цикла — операторов, находящихся между begin и end.
Если между begin и end находится только один оператор, то begin и end можно не писать.
Оператор while выполняется следующим образом: сначала проверяется условие (вычисляется значение выражения <условие>). Если условие не выполняется (значение выражения <условие> равно false), то операторы цикла, расположенные между begin и end, не выполняются, и на этом выполнение операторы while завершается. Если условие выполняется (значение выражения <условие> равно true), то выполняются следующие за do, расположенные между begin и end, операторы тела цикла, и после этого снова проверяется выполнение условия. Если условие выполняется, то операторы цикла выполняются еще раз. И так до тех пор, пока условие не станет ложным.
Важные особенности оператора цикла while:
Для того чтобы тело цикла было выполнено хотя бы один раз, необходимо, чтобы перед выполнением оператора while условие выполнения цикла было истинно;
Для того чтобы цикл завершился, необходимо, чтобы последовательность операторов между begin и end изменяла значения переменных, входящих в выражение <условие>.
П р и м е р 2. Составить программу решения задачи примера 1 с использованием оператора while.
Блок-схема алгоритма решения будет иметь вид, аналогичный рис. 1.
Текст программы:
program summa;
var
i, n:integer; {номер элемента ряда и число элементов}
elem:real; {значение элемента ряда}
sum:real; {сумма элементов ряда}
begin
writeln(‘Введите число элементов ряда n’);
readln(n);
sum:=0; i:=1; {начальное значение суммы и параметра цикла}
while i<=n do
begin
elem:=l/i;
sum: =sum+elem; {подсчет суммы элементов}
writeln(i:2, ' ',elem: 4:2); {вывод значения текущего элемента ряда}
i:=i+1 {увеличение параметра цикла}
end;
writeln('Сумма элементов ряда: ',sum: 4:2);
end.
Оператор repeat, как и оператор while, используется в программе, если надо провести некоторые повторяющиеся вычисления (цикл), но число повторений во время разработки программы неизвестно и может быть определено только во время работы программы, т. е. определяется ходом вычисления.
В общем виде оператор repeat записывается так:
repeat
{операторы тела цикла}
until <условие>;
где <условие> — выражение логического типа, определяющее условие завершения цикла.
Оператор repeat выполняется следующим образом: сначала выполняются операторы тела цикла, следующие за словом repeat. Затем проверяется условие (вычисляется значение выражения <условие>). Если условие ложно (значение выражения условие равно false), то операторы цикла (операторы, находящиеся между repeat и until) выполняются еще раз. Если условие истинно (значение выражения <условие> равно true), то выполнение цикла прекращается.
Таким образом, операторы, находящиеся между repeat и until, выполняются до тех пор, пока условие ложно (значение выражения <условие> равно false).
Важные особенности оператора цикла repeat:
Находящиеся между repeat и until, всегда будут выполнены хотя бы один раз;
Для того чтобы цикл завершился, необходимо, чтобы операторы цикла, находящиеся между repeat и until, изменяли значения переменных, входящих в выражение <условие>.
П р и м е р 3. Составить программу вычисления суммы целых положительных чисел, введенных с клавиатуры.
Текст программы:
program summrep;
var
numb: integer; {число, введенное с клавиатуры}
sum: integer; {сумма введенных чисел}
begin
writeln('Вычисление суммы положительных целых чисел');
sum:=0;
repeat
write('введите число > ');
readln(numb); {ввод очередного числа}
if numb>0 then sum:=sum+numb; {вычисление суммы}
until numb <= 0;
writeln('Сумма введенных чисел = ',sum:6);
end.
Программа завершает работу, как только вводится первое неположительное число.