Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР_ИНФОРМАТИКА_Паскаль_ч.1.doc
Скачиваний:
1
Добавлен:
16.08.2019
Размер:
1.09 Mб
Скачать
  1. Практическая часть

2.1. Ознакомиться с описанием лабораторной работы и по указанию преподавателя запустить систему программирования Turbo Pascal.

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

2.3. Набрать текст программы, сохранить его в рабочем каталоге и выполнить компиляцию программы.

2.4. Подобрать контрольный набор исходных данных и запустить программу на выполнение. Результаты зафиксировать в рабочей тетради. Если возникли ошибки на этапе выполнения, то следует провести отладку программы, изменить исходные данные, и повторить пп. 2.3, 2.4.

2.5. Проверить работу программы, задавая 3 – 4 набора исходных данных. Результаты зафиксировать в рабочей тетради.

2.6. По данным рабочей тетради аккуратно оформить отчет по лабораторной работе и предъявить преподавателю. В отчете по каждому заданию должны быть отражены следующие пункты:

  1. БСА алгоритма.

  2. Исходный текст программы с комментариями.

  3. Результаты отладки по п.2.4.

  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:

  1. Для того чтобы тело цикла было выполнено хотя бы один раз, необходимо, чтобы перед выполнением оператора while условие выполнения цикла было истинно;

  2. Для того чтобы цикл завершился, необходимо, чтобы последовательность операторов между 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:

  1. Находящиеся между repeat и until, всегда будут выполнены хотя бы один раз;

  2. Для того чтобы цикл завершился, необходимо, чтобы операторы цикла, находящиеся между 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.

Программа завершает работу, как только вводится первое неположительное число.

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