- •2. Методические указания к практическим занятиям
- •2. Текст программы:
- •X,y:real; (* аргумент и функция *)
- •3. Схема алгоритма задачи 2
- •2. Тексты программ:
- •X,y:real; (* аргумент и функция *)
- •X,y:real; (* аргумент и функция *)
- •X,y:real; (* аргумент и функция *)
- •2. Тексты программ:
- •2. Текст программы:
- •3. Схема алгоритма задачи 5
- •2. Текст программы:
- •3. Схема алгоритма задачи 6
- •2. Текст программы:
- •3. Схема алгоритма задачи 7
- •2. Текст программы:
- •3. Схема алгоритма задачи 8
- •Приложения Основные символы схем алгоритмов
2. Тексты программ:
PROGRAM z31;
(* 1-й способ с оператором цикла FOR *)
CONST
k=2; (* поименованная константа *)
str=‘*************************************’;
(* строка символов *)
VAR
X,y:real; (* аргумент и функция *)
i:INTEGER; (* переменная цикла *)
BEGIN
WRITELN(str);
WRITELN(‘* x * у *’);
WRITELN(str);
х:=0.0;
FOR i:=1 TO 11 DO
BEGIN
y:=SIN(k*x);
WRITELN (‘*’, x:17:8,‘*’, y:18:8,‘*’);
x:=x+0.1;
END;
WRITELN (str);
END.
3а) Схема алгоритма задачи 3 (1-й способ (цикл FOR))
X
– имя аргумента
Y
– имя функции
K
– коэффициент
I
– счетчик
циклов
Объявление
переменных
Печать
строки
Печать
заголовка
Печать
окончания
PROGRAM z32;
(* 2-й способ с оператором цикла WHILE *)
CONST
k=2; (* поименованная константа *)
str=‘*************************************’;
(* строка символов *)
VAR
X,y:real; (* аргумент и функция *)
BEGIN
WRITELN(str);
WRITELN(‘* x * у *’);
WRITELN(str);
х:=0.0;
WHILE х<1.1 DO
BEGIN
y:=SIN(k*x);
WRITELN(‘*’, x:17:8, ‘*’, y:18:8, ‘*’);
x:=x+0.1;
END;
WRITELN(str);
END.
3б) Схема алгоритма задачи 3 (2-й способ (цикл WHILE))
X
– имя аргумента
Y
– имя функции
K
– коэффициент
Объявление
переменных
Печать
строки
Печать
заголовка
Печать
окончания
PROGRAM z33;
(* 3-й способ с оператором цикла REPEAT *)
CONST
k=2; (* поименованная константа*)
str=‘*************************************’;
(* строка символов *)
VAR
X,y:real; (* аргумент и функция *)
BEGIN
WRITELN(str);
WRITELN(‘* x * у *’);
WRITELN(str);
х:=0.0;
REPEAT
y:=SIN(k*x);
WRITELN(‘*’, x:17:8, ‘*’, y:18:8, ‘*’);
x:=x+0.1;
UNTIL x>l.l;
WRITELN(str);
END.
3в) Схема алгоритма задачи 3 (3-й способ (цикл REPEAT))
X
– имя аргумента
Y
– имя функции
K
– коэффициент
Объявление
переменных
Печать
строки
Печать
заголовка
Печать
окончания
Задача 4
1. Условие: Составить схему алгоритма и написать ВР-программу вычисления суммы бесконечного ряда для заданного значения переменной и формулы общего члена ряда (см. табл. П. 1). Предусмотреть завершение суммирования и печать результата при достижении очередным членом ряда абсолютной величины, меньшей, чем 0.0001.
Пример: значение переменной – 0.1;
Формула общего члена ряда
2. Тексты программ:
PROGRAM z41; (* 1-й способ с оператором перехода GOTO *)
CONST
k=2; (* поименованная константа *)
LABEL 1; (* метка *)
VAR
x,s,a:REAL; (* переменная, сумма, элемент суммы *)
i,j,znak,fakt:INTEGER; (* номер элемента суммы, переменная цикла, знак, факториал *)
BEGIN
s:=0.0;
i:=0;
znak:=1;
x:=0.1;
1: i:=i+1;
znak:=znak*(-1);
fakt:=1;
FOR j:=1 TO (k*i+1) DO fakt:=fakt*j;
a:=znak*EXP((k*i+1)*LN(k*x))/fakt;
s:=s+a;
IF ABS(a)>0.0001 THEN GOTO 1;
WRITE(‘При a= ’,a:9:7, ‘сумма= ’,s:9:7);
WRITELN(‘на’ 4:2,‘-ой итерации’);
END.
3а) Схема алгоритма задачи 4 (1-й способ (опера-торы IF и GOTO))
X
– аргумент
S
– сумма
а
– член ряда
znak
– знак члена ряда
i
– номер итерации
j
– счётчик циклов
K
– коэффициент
FAKT
–
факториал
Объявление
переменных
Вывод
результата
PROGRAM z42;
(* 2-й способ с оператором цикла WHILE *)
CONST
k=2; (* поименованная константа *)
VAR
x,s,a:REAL; (* переменная, сумма, элемент суммы *)
i,j,znak,fakt:INTEGER; (* номер элемента суммы,
переменная цикла, знак, факториал *)
BEGIN
s:=0.0;
i:=0;
znak:=1;
x:=0.1;
a:=1;
WHILE ABS(a)>0.0001 DO
BEGIN
i=i+1;
znak:=znak*(-1);
fakt:=1;
FOR j:=1 TO (k*i+1) DO
fakt:=fakt*i;
a:=znak*EXP((k*i+1)*LN(k*x))/fakt;
s:=s+a;
END;
WRITE(‘При a= ’,a:9:7, ‘сумма= ’,s:9:7);
WRITELN(‘на ’i:2,‘-ой итерации’);
END.
3б) Схема алгоритма задачи 4 (2-й способ (цикл WHILE))
X
– аргумент
S
– сумма
а
– член ряда
znak
– знак члена ряда
i
– номер итерации
j
– счётчик циклов
K
– коэффициент
FAKT
–
факториал
Объявление
переменных
Вывод
результата
PROGRAM z43;
(* 3-й способ с оператором цикла REPEAT *)
CONST
k=2; (* поименованная константа *)
VAR
x,s,a:REAL; (* переменная, сумма, элемент суммы *)
i,j,znak,fakt:INTEGER; (* номер элемента суммы, переменная цикла, знак, факториал *)
BEGIN
s:=0.0;
i:=0;
znak:=1;
x:=0.1;
REPEAT
i:=i+1;
znak:=znak*(-1);
fakt:=1;
FOR j:=1 TO (k*i+1) DO
fakt:=fakt*j;
a:=znak*EXP((k*i+1)*LN(k*x)/fakt;
s:=s+a:
UNTIL ABS(a)>0.0001;
WRITE(‘При а= ’,а:9:7, ‘сумма= ’,s:9:7);
WRITELN(‘на ’ i:2,‘-ой итерации’);
END.
3в) Схема алгоритма задачи 4 (3-й способ (цикл REPEAT))
X
– аргумент
S
– сумма
а
– член ряда
znak
– знак члена ряда
i
– номер итерации
j
– счётчик циклов
K
– коэффициент
FAKT
–
факториал
Объявление
переменных
Вывод
результата
PROGRAM z44; (* 4-й способ с операторами описания и вызова процедур и функций *)
CONST
k=2; (* поименованная константа )
VAR
x,s,a,i:REAL; (* переменная, сумма, элемент суммы,
номер элемента суммы *)
i1:INTEGER; (* целый тип номера элемента суммы *)
FUNCTION fakt(f:INTEGER):INTEGER; (* функция факториал *)
VAR fak,j:INTEGER; (* локальные переменные *)
BEGIN
fak:=1;
FOR j:=1 TO f DO
fak:=fak*j;
fakt:=fak;
END;
PROCEDURE summa(VAR,s:REAL; b:REAL); (* процедура суммы *)
BEGIN
s:=s+b;
END;
FUNCTION stepen(osn:REAL;step:INTEGER):RЕАL; (* функция степени *)
VAR k:INTEGER; (* локальные*)
st:REAL; (* переменные *)
BEGIN
st:=1.0;
FOR k:=1 TO step DO
st:=st*osn;
stepen:=st;
END;
BEGIN
s:=0.0;
i:=0;
x:=0.1;
REPEAT
summa(i,1.0);
i1:=TRUNC(i);
a:=stepen(-1.0,i1)* stepen(k*x,k*i1+1)/fakt(k*i1+1);
summa(s,a);
UNTIL ABS(a)<0.0001;
WRITE(‘При a= ’,a:9:7, ‘сумма= ’,s:9:7);
WRITELN(‘на ’,i1:2,‘-ой итерации’);
END.
3г) Схема алгоритма задачи 4 (4-й способ (FUNCTION и PROCEDURE))
Объявление
переменных
Вывод
результата
Описание
функции
Описание
процедуры
Описание
функции
Вызов
процедуры
Преобразование
к целому типу
Вызов
процедуры
Функция FAKT
F
– формальный параметр
j
– счётчик циклов
FAK
– промежуточная переменная
Объявление
переменных
Присвоение
значения функции
Передача
значения параметру
Процедура SUMMA
Передача
значений параметрам
S,
B
– формальные параметры
Функция STEPEN
OSN,
STEP
– формальные параметры
K
– счётчик циклов
ST
– промежуточная переменная
Объявление
переменных
Присвоение
значения функции
Передача
значений параметрам
Задача 5
1. Условие: Составить схему алгоритма и написать ВР-программу обработки одномерного массива целых чисел (вид обработки см. в табл. П. 2). Результат вывести на экран дисплея.
Пример: вид обработки заключается в подсчете количества положительных элементов массива.