Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Р-Г работа.docx
Скачиваний:
3
Добавлен:
21.09.2019
Размер:
95.49 Кб
Скачать

Министерство образования и науки РФ

СИБИРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНОЛОГИЧЕСКИЙ УНИВЕРСИТЕТ

Лесосибирский филиал

Кафедра: Информационных и технических систем

Алгоритмы линейной, разветвленной и циклической структуры

Пояснительная записка

(ИТС. 230100.012 ПЗ)

Руководитель:

________П.А. Егармин

(подпись)

____________________

(оценка, дата)

Разработал:

Студент группы 61-1

__________ Р.О. Сухих

(подпись)

____________________

(дата)

Содержание

Вариант №8

ПРОГРАММИРОВАНИЕ АЛГОРИТМОВ ЛИНЕЙНОЙ СТРУКТУРЫ

Цель работы: Изучение базовой алгоритмической конструкции «линейное следование». Изучение структуры Pascal-программы, синтаксиса и семантики блоков Pascal-программы. Изучение процедур ввода-вывода WRITELN, WRITE, READ, READLN, оператора присваивания.

Задание 1.

Постановка задачи:

Даны числа x, y, z. Разработать программу вычисления значений переменных a, b, если

Математическая формулировка задачи:

В данных формулах трудность представляет только нахождение значения числа в сложной степени. Эта задача решается представлением степени через натуральный логарифм:

Таблица 1 - Таблица внешних спецификаций:

Имя

переменной

Назначение

переменной

Тип

переменной

Единицы

измерения

Входные

данные

x

y

z

число

число

число

real

real

real

-

-

-

Выходные

данные

a

b

число

число

real

-

-

Расчет контрольных примеров :

При x=4, y=8, z=1: a= =0, b= =0,9

При x=10, y=8, z=0: a= =12.5, b= =0

Б лок-схема:

Рисунок 1 – Блок-схема к заданию №1

Программная реализация:

Program laba2;

uses

crt;

var

x,y,z,a,b: real;

begin

clrscr;

write ('x= ');

readln (x);

write ('y= ');

readln (y);

write ('z= ');

readln (z);

a:=ln(x-exp(1/3*ln(y)))*(x-y/2);

b:=sqr(sin(y-x))*(sin(z)/cos(z));

writeln ('Ответ: ');

writeln ('a=', a:10:6);

writeln ('b=', b:10:6);

readln;

end.

Протокол выполнения программы:

  1. в процессе диалога с пользователем вводим x=4, y=8, z=1;

  2. вычисление a:=ln(x-exp(1/3*ln(y)))*(x-y/2);

  3. вычисление b:=sqr(sin(y-x))*(sin(z)/cos(z));

  4. печать ‘a= 0;

  5. печать ‘b= 0.892005;

  1. в процессе диалога с пользователем вводим x=10, y=8, z=0;

  2. вычисление a:=ln(x-exp(1/3*ln(y)))*(x-y/2);

  3. вычисление b:=sqr(sin(y-x))*(sin(z)/cos(z));

  4. печать ‘a=12.476649;

  5. печать ‘b=0;

Задание 2.

Постановка задачи:

Разработать программу вычисления радианной меры угла U, если мы вводим a-градусов, b-минут, c-секунд. По данной формуле:

Таблица 2 - Таблица внешних спецификаций:

Имя

переменной

Назначение

переменной

Тип

переменной

Единицы

измерения

Входные

данные

a

b

с

число

число

число

integer

integer

integer

градусы

минуты

секунды

Выходные

данные

U

число

real

радианы

Расчет контрольных примеров :

При a=35, b=26, c=47, =0.6

При a=45, b=30, c=15 , =0.8

Блок-схема:

Рисунок 2 – Блок-схема к заданию №2

Программная реализация:

Program laba2ugl;

uses

crt;

var

a,b,c: integer;

U: real;

begin

clrscr;

write ('Введите а градусов ');

readln (a);

write ('Введите b минут ');

readln (b);

write ('Введите с секунд ');

readln (c);

U:=a*PI/180+b*PI/(180*60)+c*PI/(180*60*60);

writeln ('Ответ: ');

writeln ('Угол U=',U:6:6, ' радиан');

readln;

end.

Протокол выполнения программы:

  1. в процессе диалога с пользователем вводим a=35, b=26, c=47;

  2. вычисление ;

  3. печать ‘U= 0.618656;

  1. в процессе диалога с пользователем вводим x=45, y=30, z=15;

  2. вычисление ;

  3. печать ‘U=0.794198;

Задание 3.

Постановка задачи:

Разработать программу вычисления сторон треугольника a, b, c, если нам даны 2 угла B и C и высота h.

Математическая формулировка задачи:

В нашем примере q – это угол B, е – угол C. Первую сторону b мы находим с помощью определения синуса угла в прямоугольном треугольнике ( ), аналогично находим сторону c ( ). Затем вычисляем угол A, который в нашей задаче есть t, по основному свойству углов треугольника, что их сумма равна 180°(A=180°-B-C). Затем вычисляем последнюю сторону a по теореме косинуса ( );

Таблица 3 - Таблица внешних спецификаций:

Имя

переменной

Назначение

переменной

Тип

переменной

Единицы

измерения

Входные

данные

q

e

h

p

угол B

угол C

высота

угол A

real

real

real

real

градусы

градусы

сантиметры

градусы

Выходные

данные

a

b

c

сторона

сторона

сторона

real

real

real

сантиметры

сантиметры

сантиметры

Расчет контрольных примеров:

При q=60, e=60, h=5.2

=6

=6

=6

При q=60, e=60, h=3,

=3.5

=6

=6.9

Блок-схема:

Рисунок 3 – Блок-схема к заданию №3

Программная реализация:

Program laba2treug;

uses

crt;

var

a,b,t,c,h,q,e: real;

begin

clrscr;

write ('Введите угол q ');

readln (q);

write ('Введите угол e ');

readln (e);

write ('Введите высоту, проведённую к стороне а. h= ');

readln (h);

t:=180-q-e;

q:=q*(PI/180);

e:=e*(PI/180);

t:=t*(PI/180);

b:=abs(h/sin(e));

c:=abs(h/sin(q));

a:=abs(sqrt((sqr(b)+sqr(c)-2*b*c*cos(t))));

writeln ('Ответ: ');

writeln ('Сторона  a=', a:5:3);

writeln ('Сторона  b=', b:5:3);

writeln ('Сторона  c=', c:5:3);

readln;

end.

Протокол выполнения программы:

  1. в процессе диалога с пользователем вводим q=60, e=60, h=5.2;

  2. вычисление ;

  3. вычисление ;

  4. вычисление ;

  5. печать ‘a= 6.007’;

  6. печать ‘b= 6.007’;

  7. печать ‘c= 6.007’;

  1. в процессе диалога с пользователем вводим q=30, e=60, h=3;

  2. вычисление ;

  3. вычисление ;

  4. вычисление ;

  5. печать ‘a= 6.928’;

  6. печать ‘b= 3.464’;

  7. печать ‘c= 6’;

ПРОГРАММИРОВАНИЕ АЛГОРИТМОВ РАЗВЕТВЛЕННОЙ СТРУКТУРЫ

Цель работы: Изучение базовой алгоритмической конструкции «ветвление». Изучение структуры логических операций. Изучение операторов условного перехода (IF…THEN…ELSE…), выбора (CASE), безусловного перехода (GOTO).

Задание 1.

Постановка задачи:

Написать программу для расчета числа P, при вводе с клавиатуры числа х. Если число x принадлежит отрезкам [3;8] и [1;5], то число Р присвоить значение равное , в противном случае нахождением тангенса числа х ( ).

Таблица 4 - Таблица внешних спецификаций:

Имя переменной

Назначение переменной

Тип переменной

Единицы измерения

Входные данные

x

вводимое число

integer

-

Выходные данные

P

число

integer

-

Расчет контрольных примеров :

При x=3, P= =9;

При x=0, P= =0;

Блок-схема:

_ +

Рисунок 4 – Блок-схема к заданию №1

Программная реализация:

Program Laba3_P;

uses

crt;

var

x,P: real;

begin

clrscr;

Writeln ('Введите значение x');

Write ('x= ');

Readln (x);

if ((x>=3) and (x<=8)) and ((x>=1) and (x<=5)) then

begin

P:=sqr(x);

end

else

begin

P:=(sin(x)/cos(x))*(PI/180);

end;

Writeln ('Результат: ');

Writeln ('P= ', P:5:3);

Readln;

end.

Протокол выполнения программы:

1) в процессе диалога с пользователем вводим значения x=3;

2) условие (x>=3, x<=8) и (x>=1, x<=5) выполняется, переходим к шагу 3;

3) вычисление P:=sqr(x);

4) вычисление P:=(sin(x)/cos(x))*(PI/180);

5) печать ‘P=9.000’

1) в процессе диалога с пользователем вводим значения x=0;

2) условие (x>=3, x<=8) и (x>=1, x<=5) не выполняется, переходим к шагу 4;

3) вычисление P:=sqr(x);

4) вычисление P:=(sin(x)/cos(x))*(PI/180);

5) печать ‘P=0.000’

Задание 2.

Постановка задачи:

Написать программу для определения площади треугольника, при вводе с клавиатуры координат вершин. Если вершины треугольника образуют прямоугольный треугольник.

Математическая формулировка задачи:

Треугольник будет прямоугольным, если координата x у двух вершин будет совпадать, и координата y у двух вершин тоже будет одинаковой. Треугольник будет прямоугольный, если будет выполняться условие, что квадрат одной стороны равен сумме квадратов двух других сторон.

Таблица 5 - Таблица внешних спецификаций:

Имя переменной

Назначение переменной

Тип переменной

Единицы измерения

Входные данные

x1

x2

x3

y1

y2

y3

Координата x первой вершины

Координата x второй вершины

Координата x третьей вершины

Координата y первой вершины

Координата y второй вершины

Координата y третьей вершины

integer

integer

integer

integer

integer

integer

-

-

-

-

-

-

Промежуточные

данные

a

b

c

Сторона треугольника a

Сторона треугольника b

Сторона треугольника c

real

real

real

см

см

см

Выходные

данные

S

-

Площадь треугольника

Треугольник не прямоугольный

Real

-

см2

-

Расчет контрольных примеров :

При x1=1, y1=1, x2=1, y2=5, x3=5, y3=1 |=> треугольник прямоугольный, S=8.

При x1=1, y1=2, x2=3, y2=4, x3=5, y3=6 |=> треугольник не прямоугольный.

Блок-схема:

Рисунок 5 – Блок-схема к заданию №2

Программная реализация:

Program Laba3_treug;

uses

crt;

var

x1,y1,x2,y2,x3,y3: integer;

a,b,c,S: real;

begin

clrscr;

Writeln ('Введите значение координат первой точки');

Write ('x1= ');

Readln (x1);

Write ('y1= ');

Readln (y1);

Writeln ('Введите значение координат второй точки');

Write ('x2= ');

Readln (x2);

Write ('y2= ');

Readln (y2);

Writeln ('Введите значение координат третьей точки');

Write ('x3= ');

Readln (x3);

Write ('y3= ');

Readln (y3);

a:=sqrt(sqr(y3-y2)+sqr(x3-x2));

b:=sqrt(sqr(y3-y1)+sqr(x3-x1));

c:=sqrt(sqr(y2-y1)+sqr(x2-x1));

if a=sqrt(sqr(b)+sqr(c)) then

begin

S:=b*c/2;

Writeln (Результат: ');

Writeln ('Треугольник прямоугольник. S= ', S:5:3);

end

else

if b=sqrt(sqr(a)+sqr(c)) then

begin

S:=a*c/2;

Writeln ('Результат: ');

Writeln ('Треугольник прямоугольник. S= ', S:5:3);

end

else

if c=sqrt(sqr(b)+sqr(a)) then

begin

S:=a*b/2;

Writeln ('Результат: ');

Writeln ('Треугольник прямоугольник. S= ', S:5:3);

end

else

begin

Writeln ('Результат: ');

Writeln ('Треугольник не прямоугольник ');

end;

Readln;

end.

Протокол выполнения программы:

1) в процессе диалога с пользователем вводим значения координат точек: x1=1, y1=1, x2=1, y2=5, x3=5, y3=1;

2) находим длины стороны a, b и c;

3) проверяем условие, что треугольник прямоугольный (квадрат стороны равен сумме квадратов двух других сторон);

4)условие выполняется, вычисление S:=a*b/2;

5) печать ‘Треугольник прямоугольный’ S=8.000;

1) в процессе диалога с пользователем вводим значения координат точек: x1=1, y1=2, x2=3, y2=4, x3=5, y3=6;

2) находим длины стороны a, b и c;

3) проверяем условие, что треугольник прямоугольный (квадрат стороны равен сумме квадратов двух других сторон);

4)условие не выполняется, вычисление S не происходит;

5) печать ‘Треугольник не прямоугольный’;

ПРОСТЕЙШАЯ ЦЕЛОЧИСЛЕННАЯ АРИФМЕТИКА

Цель: Изучение основ целочисленного программирования. Целочисленные операции (DIV, MOD). Целочисленные функции (INT, ROUND, TRUNC).

Задание 1.

Постановка задачи:

Написать программу для определения дня недели, при вводе с клавиатуры номер дня года (k). Если 1 января было понедельником и дна недели пронумерованы следующим образом: 0-воскресенье, 1-понедельник, 2-вторник, …, 6-суббота.

Таблица 6 - Таблица внешних спецификаций:

Имя переменной

Назначениепеременной

Тип переменной

Единицы измерения

Входные данные

k

Номер дня года

integer

-

Выходные данные

-

День недели

-

-

Расчет контрольных примеров:

При k=12, 5-пятница;

При k=365, 1-понедельник;

Блок-схема:

Рисунок 6 – Блок-схема к заданию №1

Программная реализация:

program laba_4;

uses

crt;

var K: integer;

begin

clrscr;

repeat

writeln(‘Программа определяет номер дня недели по количеству дней, прошедших от 01.01(понедельник)');

writeln('Если: ');

writeln('0-воскресенье');

writeln('1-понедельник');

writeln('2-вторник');

writeln('3-среда');

writeln('4-четверг');

writeln('5-пятница');

writeln('6-суббота ');

writeln('Введите день года  (K): ');

readln(K);

until (K>0) and (K<366);

case K mod 7 of

0:write(‘0-воскресенье’);

1:write(‘1-понедельник’);

2:write(‘2-вторник’);

3:write(‘3-среда’);

4:write(‘4-четверг’);

5:write(‘5-пятница’);

6:write(‘6-суббота’);

end;

readln;

end.

Протокол выполнения программы:

1) в процессе диалога с пользователем вводим значения k=12;

2) условие (k>0) и (k<366) выполняется, программа выполняется;

3) вычисление k mod 7;

4) печать ‘5-пятница’

1) в процессе диалога с пользователем вводим значения k=365;

2) условие (k>0) и (k<366) выполняется, программа выполняется;

3) вычисление k mod 7;

4) печать ‘1-понедельник’

ОПЕРАТОРЫ ЦИКЛА (FOR TO/DOWNTO DO).

Цель: Изучение базовой алгоритмической конструкции «цикл». Изучение оператора цикла с параметром (FORTO/DOWNTODO),вложенных циклов с параметром.

Задание 1.

Дано вещественное число А и целое число N (>0).Написать программу, в которой, используя один цикл, выводится число A в степени N ( ).

Таблица 7 - Таблица внешних спецификаций:

Имя переменной

Назначение переменной

Тип переменной

Единицы измерения

Входные данные

a

n

вводимое число

вводимое число

real

integer

-

Промежуточные вычисления

i

параметр цикла

integer

-

Выходные данные

p

выводимое число

real

-

Расчет контрольных примеров:

При a=2, n=6:

= =64.

При a=-9, n=2:

= =81.

Блок-схема:

Рисунок 7 – Блок-схема к заданию №1

Программная реализация:

program laba5_1;

uses

crt;

var

n,i:integer;

a,p:real;

begin

clrscr;

write('Введите число A: ');

readln(a);

write('Введите степень, число N: ');

readln(n);

p:=1;

for i:=1 to N do

p:=p*a;

writeln(a:2:1,'в степени ',n,'=', p:6:2);

readln;

end.

Протокол выполнения программы:

1) в процессе диалога с пользователем вводим значения a=2, n=6

2) присваиваем p=1;

3) цикл условие i=1 до n=6 выполняется;

4) вычисление p:=p*a;

5) печать ‘2.0 в степени 6= 64.00’

1) в процессе диалога с пользователем вводим значения a=-9, n=2;

2) присваиваем p=1;

3) цикл условие i=1 до n=2 выполняется;

4) вычисление p:=p*a;

5) печать ‘-9.0 в степени 2= 81.00’;

Задание 2.

Дано целое число N (>0). Последовательность вещественных чисел AK определяется следующим образом: A0 = 1, AK = (AK −1 + 1)/K, K = 1, 2, . . . . Вывести элементы A1, A2, . . . , AN

Таблица 8 - Таблица внешних спецификаций:

Имя переменной

Назначение переменной

Тип переменной

Единицы измерения

Входные данные

n

вводимое число

integer

-

Промежуточные вычисления

k

параметр цикла

integer

-

Выходные данные

Ak

значение выражения

real

-

Расчет контрольных примеров:

При n=4: a1=2; a2=1.5; a3=0.8; a4=0.5;

При n=6: a1=2; a2=1.5; a3=0.8; a4=0.5; a5=0.3; a6=0.2;

Блок-схема:

Рисунок 8 – Блок-схема к заданию №2

Программная реализация:

program laba5_3;

uses

crt;

var

n,k:integer;

Ak:real;

begin

clrscr;

writeln('Введите число элементов N: ');

readln(n);

Ak:=1;

for k:=1 to N do

begin

Ak:=(Ak+1)/k;

write('A');

write(k);

writeln('=', Ak:6:3);

end;

readln;

end.

Протокол выполнения программы:

1) в процессе диалога с пользователем вводим значения n=4;

2) присваиваем Ak=1;

3) цикл условие k=1 до n=4 выполняется;

4) вычисление Ak:=(Ak+1)/k;

5) печать ‘A1=2.000’;

6) печать ‘A2=1.500’;

7) печать ‘A3=0.833’;

8) печать ‘A4=0.458’;

1) в процессе диалога с пользователем вводим значения n=6;

2) присваиваем Ak=1;

3) цикл условие k=1 до n=6 выполняется;

4) вычисление Ak:=(Ak+1)/k;

5) печать ‘A1=2.000’;

6) печать ‘A2=1.500’;

7) печать ‘A3=0.833’;

8) печать ‘A4=0.458’;

9) печать ‘A5=0.292’;

10) печать ‘A6=0.215’;

Задание 3.

Вычислить .

Таблица 9 - Таблица внешних спецификаций:

Имя переменной

Назначение переменной

Тип переменной

Единицы измерения

Входные данные

-

-

-

-

Промежуточные вычисления

a

b

параметр цикла

параметр цикла

integer

integer

-

-

Выходные данные

y

выводимое число

real

-

Расчет контрольных примеров:

y=(3+2+1+0)*(4+3+2+1)*(7+6+5+4)*(12+11+10+9)=55440

Блок-схема:

Рисунок 9 – Блок-схема к заданию №3

Программная реализация:

program laba5_4;

uses

crt;

var

a,b:integer;

p,s,y:real;

begin

clrscr;

s:=0;

p:=1;

for a:=0 to 3 do

begin

for b:=3 down to 0 do

s:=s+(sqr(a)+b);

p:=p*s;

s:=0;

end;

y:=p;

writeln('y=', y:6:1);

readln;

end.

Протокол выполнения программы:

1) Присваиваем s:=0;

2) Присваиваем p:=1;

3) Цикл условие внешний a=0 до 3 выполняется;

4) Вложенный цикл условие b=3 до 0 выполняется;

5) Вычисление во вложенном цикле s:=s+(sqr(a)+b);

6) Вычисление во внешнем цикле p:=p*s;

7) Присваиваем s:=0;

7) Присваиваем y:=p;

8) Печать (‘y=55440.0’);

Задание 4.

Даны целые положительные числа A и B (A < B). Вывести все целые числа от A до B включительно; при этом каждое число должно выводиться столько раз, каково его значение (например, число 3 выводится 3 раза).

Таблица 10 - Таблица внешних спецификаций:

Имя переменной

Назначение переменной

Тип переменной

Единицы измерения

Входные данные

-

-

-

Промежуточные вычисления

a

b

параметр цикла

параметр цикла

integer

integer

-

-

Выходные данные

y

выводимое число

real

-

Расчет контрольных примеров:

При a=1, b=3:

i=3: число один выводится – 1 раз, число два – 2 раза, три – 3 раза.

При a=3, b=5:

i=3: число три выводится – 3 раза, число четыре – 4 раза, пять – 5 раз.

Блок-схема:

Рисунок 10 – Блок-схема к заданию №4

Программная реализация:

program laba5_5;

uses

crt;

var

a,b,raz,c,i:integer;

begin

clrscr;

repeat

writeln('Введите число a: ');

readln(a);

writeln('Введите число b: ');

readln(b);

until (a<b);

for i:=a to b do

for raz:=1 to i do

writeln(‘Все целые числа от A до B: ',i);

readln;

end.

Протокол выполнения программы:

1) в процессе диалога с пользователем вводим значения a=1, b=3;

2) внешний цикл условие i=a=1 до b=3 выполняется;

3) внутренний цикл условие raz=1 до i выполняется;

4) печать ‘Все целые числа от A до B: 1’;

5) печать ‘Все целые числа от A до B: 2, 2’;

6) печать ‘Все целые числа от A до B: 3, 3, 3’.

1) в процессе диалога с пользователем вводим значения a=3, b=5;

2) внешний цикл условие i=a=3 до b=5 выполняется;

3) внутренний цикл условие raz=1 до i выполняется;

4) печать ‘Все целые числа от A до B: 3, 3, 3’;

5) печать ‘Все целые числа от A до B: 4, 4, 4, 4’;

6) печать ‘Все целые числа от A до B: 5, 5, 5, 5, 5’.

ОПЕРАТОРЫ ЦИКЛА (REPEAT UNTIL/WHILE DO).

Цель: Изучение базовой алгоритмической конструкции «цикл». Изучение оператора цикла с предусловием (WHILE DO), цикла с постусловием (REPEAT UNTIL)

Задание 1.

Дано целое число N (>0). С помощью операций деления нацело и взятия остатка от деления определить, имеется ли в записи числа N цифра «2». Если имеется, то вывести TRUE, если нет – вывести FALSE.

Таблица 11 - Таблица внешних спецификаций:

Имя переменной

Назначение

переменной

Тип переменной

Единицы измерения

Входные данные

n

вводимое число

integer

-

Промежуточные вычисления

-

-

-

-

Выходные данные

k

выводимое значение

boolean

-

Расчет контрольных примеров:

При n=247:

k=TRUE.

При n=4578:

k=FALSE.

Блок-схема:

Рисунок 11 – Блок-схема к заданию №1

Программная реализация:

program laba6_3;

uses

crt;

var n: integer;

k: boolean;

begin

clrscr;

write('Введите число N: ');

readln(n);

k:=false;

while n<>0 do

begin

if n mod 10=2 then k:=true;

n:= n div 10;

end;

writeln(k);

readln;

end.

Протокол выполнения программы:

1) в процессе диалога с пользователем вводим значения n=247;

2) присваиваем k:=FALSE;

3) цикл предусловие while n<>0 do выполняется;

4) проверка условия n mod 10=2, условие выполняется;

5) присваиваем k:=TRUE;

6) вычисление n:= n div 10;

7) печать ‘TRUE’.

1) в процессе диалога с пользователем вводим значения n=4587;

2) присваиваем k:=FALSE;

3) цикл предусловие while n<>0 do выполняется;

4) проверка условия n mod 10=2, условие не выполняется;

5) вычисление n:= n div 10;

6) печать ‘FALSE’

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