Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Справочник Pascal ABC.doc
Скачиваний:
67
Добавлен:
07.11.2018
Размер:
985.6 Кб
Скачать

Лабораторная работа № 1 Программирование линейных алгоритмов

Ц ель работы: уметь программировать линейные алгоритмы, записывать выражения на языке Паскаль с использованием стандартных функций.

Линейным называется алгоритм, в котором результат получается путем однократного выполнения заданной последовательности действий при любых значениях исходных данных. Согласно линейному алгоритму, прогон программы начинается с ее первого выполняемого оператора. Операторы будут задействованы последовательно, один за другим, в соответствии с их расположением в тексте программы.

Задание 1. Определить площадь треугольника по формуле Герона

где а, b, с - длины сторон;

р = (а + b + с)/2 - полупериметр треугольника.

Для того чтобы рассчитать S, необходимо иметь численные значения р, а, b, с. Мы можем рассчитать р по формуле, а вот значения а, b, с должны быть заданы заранее.

Составить программу вычисления площади треугольника по формуле Герона для исходных данных трем сторонам a, b, c.

Программа на языке Pascal

program Geron; {заголовок программы}

var a, b, c, p, s : real; {описание переменных вещественного типа}

begin {начало раздела операторов}

readln(a, b, c); {вычисление исходных данных – сторон треугольника}

p := (a + b + c) / 2; {вычисление полупериметра}

s := sqrt(p * (p – a) * (p – b) * (p – c)); {вычисление площади}

write (‘ Площадь S=’,s:8:3); {вывод результирующей площади}

end. {завершение программы}

Как уже говорилось ранее, совершенно не обязательно записывать каждый оператор на новой строке. Верной была бы и следующая запись: program Geron; var a, b, c, p, s : real; begin readln(a, b, c); p := (a + b + c) / 2; s := sqrt(p * (p – a) * (p – b) * (p – c)); write (s); end.

Задание 2. Операции с переменными целого типа

Program Action;

Var A,B,C: integer;

begin

A:=17; B:=3;

C:=A*B; {Операция умножения} writeln(‘17*3=’,C);

C=A div B ; {Деление нацело} writeln(‘17 div 3=’,C );

C:=A mod B ; { Вычисление остатка от деления: } writeln(‘17 mod 3=’,C);

C:= A+B; { Сложение : } writeln(‘17 mod 3=’,C);

C=A-B; {Вычитание: } writeln(‘17 mod 3=’,C);

end.

При запуске программы вывод на экран :

17*3=51

17 div 3=5

17 mod 3= 5

17 + 3=20

17 - 3=14

Пример 1. Вычислить значение арифметического выражения следующего вида:

Программа на языке Паскаль выглядит следующим образом:

program myprog;

var a,b,c,d,v:real;

begin

a:=1.5;

b:=4.301:c:=10:

d:=7.11;

v:=(a*sqrt(abs(sin(b*c+a)))-exp(-a*c))/sqrt(abs(s*b+d)):

write(‘ V = ‘,v):

end.

Лабораторная работа № 2 Программирование разветвляющихся алгоритмов

Цель работы: уметь программировать ветвления с помощью условного оператора IF и оператора выбора Case.

Алгоритм называется разветвляющимся, если он содержит несколько ветвей, отличающихся друг от друга содержанием вычислений. Выход вычислительного процесса на ту или иную ветвь алгоритма определяется исходными данными задачи в зависимости от значения условия, которое представляет собой логическое выражение. Ветвление изменяет направление вычислительного процесса. Развилка реализуется условным оператором IF условие THEN оператор1 ELSE оператор2.

Пример 1. Вычислите корни квадратного уравнения ax2+bx+c.

Количество корней уравнения и способ их вычисления зависит от дискриминанта, который находится по формуле D=b2-4ac. Если D положительный, тогда существуют 2 корня . Если D =0, тогда существует 1 корень . Выбор способа нахождения корней уравнения осуществляется условным оператором в зависимости от значения дискриминанта D. На Рис.13 изображен алгоритм вычисления корней квадратного уравнения, по которому написана программа.

Program Quad;

var

A,B,C: real; {переменные для хранения коэффициентов}

D, x,x1,x2: real; { переменные дискриминанта и корней}

begin

writeln (' Ввод коэффициентов'); writeln (A,B,C);

D:=Sgr(B) -4*A*C; { вычисление дискриминанта}

if D<0 then writeln('Уравнение не имеет вещественных корней ')

else if D=0 then begin x:=-B / (2*A); {вычисление корня}

{вывод корней} writeln (‘Уравнения имеет один корень x=’,x:6:2);

end {перед ELSE знак ; не ставится}

else begin

x1:= (-B+Sqrt(D)) /(2*A); {вычисление корней}

x2:=(-B-Sqrt(D))/(2*A);

writeln ('Уравнения два корня: x1=', x1:6:2, ' x2=', x2:6:2); {вывод корней}

end;

end.

Рис.13. Блок –схема алгоритма нахождения корней квадратного уравнения

Пример 2. Определите номер квартала по введенному номеру месяца.

Выбор осуществляется оператором CASE селектором Dig, значения которого определяются скалярными типами перечисление и диапазон.

Program Digit;

Var Dig: integer;

begin

writeln (‘ Ввод номера месяца ‘); readln (Dig); {ввод селектора месяца }

case Dig of {выбор селектором номера месяца Dig }

1, 2, 3 : writeln(‘ первый квартал’);

4, 5, 6 : writeln(‘ второй квартал’);

7..9 : writeln(‘ третий квартал’);

{ диапазон 7..9 - интервал чисел от 7 до 9; тоже самое, что перечисление 7,8,9.}

10..12: writeln(‘ четвертый канал’);

end;

end.

Пример 3. Разработать программу для вычисления вида:

если

program mypr;

var

a,b,d:real;

begin

writeln(‘Введите исходные данные a,b= ‘);

readln(a,b);

if a*b<0 then d:=Ln(SQR(a*b)) {вычисляется d для отрицательного a*b }

else if a*b>0 then d:=Ln(a*b) {вычисляется d для положительного a*b }

else d:=0; {вычисляется d для нулевого произведения a*b}

writeln(‘ D = ‘,d:10:4); {вывод значения функции d=f(a,b) }

end;

end.